「Auto Style Attach ⭐」の機能

各種のアイコン画像を記事上に表示するには、「FontAwesome」絵文字などのWebフォントの利用が有効です。「Auto Style Attach ⭐」は、この「FontAwesome」の表示に必要な「styleタグ」を、自動的に記事本文の末尾に書き込みます。

 

また、「いいね」「コメント」「リブログ」の全てSNSボタン類を記事単位で非表示にする機能があります。 これも、専用の「styleタグ」を本文の末尾に書き込む事で実現しています。

 

これらの機能の詳細は、以下のページを参照ください。

 

 

 

 

基幹ツールに指定 

編集画面では「Ameblo Wysiwyg ⭐」が「FontAwesome」の表示環境を確保します。 しかし、編集画面で絵文字が表示されていても、投稿されたブログ記事のページで絵文字を表示するのは、「Auto Style Attach ⭐」が書込む「styleタグ」です。

 

「FontAwesome」を利用しない方には無用ですが、これを利用するユーザーにとって、正しく記事に絵文字が表示される条件は、このツールにかかっているわけです。 そういう事から、「Auto Style Attach ⭐」を基幹ツールに指定しました。

 

 

基幹ツールの起動を監視するツール 

今回の更新は、基幹ツールを監視する機能の実装に対応したものです。 この機能の詳細は以下のページを参照ください。

 

 

 

実際の更新は、以下の部分に起動を報告するコードを追加しています。

 

「Auto Style Attach ⭐」 ver. 1.6  28行~

function main(){
    sessionStorage.setItem("jslord_3", "1"); // 📛

    let target=document.getElementById('cke_1_contents'); // 監視 target
    let monitor=new MutationObserver(catch_publish);
    monitor.observe(target, {childList: true});

~~~~

 

コメントに「📛」を書き込んでいますが、これは今後の起動監視に関して、各ツールのメンテナンス上で、検索をし易くするためです。

 

 

 

他の更新をした部分 

「SNSボタン」の非表示に関する「styleタグ」を、チェックしましたが、スマートフォンのブラウザでブログを参照した場合の「SNSボタン」の「class名」が変更されていました。 下は修正済のコードです。

 

「Auto Style Attach ⭐」 ver. 1.6  108行~

// 以下は スマホスキン対応
'._1oW7Td1- { display: none; }'+

 

〔注〕

「SNSボタン」の非表示は、スマホ専用の「アメーバアプリ」で閲覧した場合には無効です。 上のコードは、スマホ上で動作するスマホ版ブラウザで閲覧した場合に有効なコードです。

 

 

 

「Auto Style Attach ⭐」を利用するには

このツールは Chrome / Edge / Firefox版の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。

 

❶「Tampermonkey」を導入します

◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。

既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。 

拡張機能の導入については、以下のページに簡単な説明があるので参照ください。

 

 

❷「Tampermonkey」にスクリプトを登録します

◎「Tampermonkey」の「」マークの「新規スクリプト」タブを開きます。

 

 

 

◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。

 

〔コピー方法〕 軽量シンプルなツール「PreBox Button   」を使うと

  コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」

  の操作で、掲載コードのコピーが可能になります。

 

◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。

 

 

〔 Auto Style Attach ⭐ 〕 ver. 1.6

 

// ==UserScript==
// @name        Auto Style Attach ⭐
// @namespace  http://tampermonkey.net/
// @version      1.6
// @description  文書末尾に常設 styleタグを自動記入する
// @author       Ameba Blog User
// @match        https://blog.ameba.jp/ucs/entry/srventry*
// @exclude      https://blog.ameba.jp/ucs/entry/srventrylist.do*
// @grant         none
// ==/UserScript==

// 文書保存時(下書きを含む全投稿時)に常設 styleタグを書込みます
// SNSボタン非表示を設定できます(PC表示のみ)


let retry=0;
let interval=setInterval(wait_target, 100);
function wait_target(){
    retry++;
    if(retry>10){ // リトライ制限 10回 1sec
        clearInterval(interval); }
    let target=document.getElementById('cke_1_contents'); // 監視 target
    if(target){
        clearInterval(interval);
        main(); }}


function main(){
    sessionStorage.setItem("jslord_3", "1"); // 📛

    let target=document.getElementById('cke_1_contents'); // 監視 target
    let monitor=new MutationObserver(catch_publish);
    monitor.observe(target, {childList: true}); // 通常・HTML編集切換による発火不能を防ぐ

    catch_publish();

    function catch_publish(){

        panel_add();

        let all_check=document.querySelector('#allFlg');
        if(all_check){
            report();
            all_check.onclick=function(event){
                if(report()==-1){ // HTML表示でチェック不可能
                    event.preventDefault(); }
                else{ // 通常表示でのみチェック可能
                    if(report()==0){
                        insert_ptag(1);
                        report(); }
                    else if(report()==1){
                        insert_ptag(0);
                        report(); }}}}


        function report(){
            let editor_iframe=document.querySelector('.cke_wysiwyg_frame');
            if(editor_iframe){ // iframe読込みが実行条件
                let iframe_doc=editor_iframe.contentWindow.document;
                if(iframe_doc){
                    let iframe_body=iframe_doc.querySelector('body.cke_editable');
                    if(iframe_body){
                        let pts=iframe_body.querySelector('.pts');
                        if(pts){
                            all_check.checked=true;
                            return 1; }
                        else{
                            all_check.checked=false;
                            return 0; }}}}
            else{
                return -1; }}


        function insert_ptag(n){
            let editor_iframe=document.querySelector('.cke_wysiwyg_frame');
            if(editor_iframe){ // iframe読込みが実行条件
                let iframe_doc=editor_iframe.contentWindow.document;
                if(iframe_doc){
                    let iframe_body=iframe_doc.querySelector('body.cke_editable');
                    if(iframe_body){

                        if(n==0){
                            let pts=iframe_body.querySelector('.pts');
                            if(pts){
                                pts.remove(); }}

                        if(n==1){
                            // style_ptext を編集して SNSボタンの非表示内容を変更出来ます ⭕
                            let style_ptext=
                                '<style class="pts" type="text/css">'+
                                '[data-uranus-component="entryAction"], '+
                                '[data-uranus-component="feedbacks"], '+

                                // 以下は 新タイプスキン対応で追加
                                '[data-uranus-component="entryShare"], '+
                                '[data-uranus-component="mainWidget"], '+

                                // 以下は 旧タイプスキン対応で追加(対応不要なら削除可)
                                '.articleExLinkArea, '+
                                '.reblogArea, '+
                                '.commentArea, '+
                                '.pagingArea:nth-of-type(3), '+

                                // 以下は レトロタイプスキン対応で追加(対応不要なら削除可)
                                '#exLinkBtn, '+
                                '#comment_module, '+

                                // 以下は スマホスキン対応
                                '._1oW7Td1- { display: none; }'+
                                '</style>';

                            iframe_body.insertAdjacentHTML('beforeend', style_ptext); } // style.ptsを追加

                    }}}} // insert_ptag(n)


        function panel_add(){
            let l_comm=document.querySelector('.l-communication');
            let p_comm=document.querySelector('.l-communication div:first-child');
            let i_input=p_comm.querySelector('#allFlg');

            if(!i_input){
                let add_comm=p_comm.cloneNode(true);
                let c_title=add_comm.querySelector('h2');
                c_title.textContent='全SNS機能';
                let c_input=add_comm.querySelector('#commentFlg');
                c_input.setAttribute('name', 'allFlg');
                c_input.setAttribute('id', 'allFlg');
                let allFlg_text=add_comm.querySelector('.spui-Checkbox-text');
                allFlg_text.textContent='Close';

                l_comm.insertBefore(add_comm, p_comm); }


            let commFlg_text=l_comm.querySelector('#commentFlg ~ .spui-Checkbox-text');
            commFlg_text.textContent='Close';

            let reblogFlg_text=l_comm.querySelector('#reblogFlg ~ .spui-Checkbox-text');
            reblogFlg_text.textContent='Close';

        } // panel_add()


        // 以下の style_text を編集すると 常設 styleタグ内容を変更出来ます ⭕
        let style_text=
            '<style class="asa" type="text/css">'+
            '@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"); '+
            '</style>';

        let submitButton=document.querySelectorAll('.js-submitButton');
        submitButton[0].addEventListener('mousedown', insert_tag , false);
        submitButton[1].addEventListener('mousedown', insert_tag , false);

        function insert_tag(e){
            let editor_iframe=document.querySelector('.cke_wysiwyg_frame');
            if(editor_iframe){ // iframe読込みが実行条件
                let iframe_doc=editor_iframe.contentWindow.document;
                if(iframe_doc){
                    let iframe_body=iframe_doc.querySelector('body.cke_editable');

                    if(iframe_body.querySelector('.asa')){
                        iframe_body.querySelector('.asa').remove(); } // 既に書込まれていたら削除して更新する
                    iframe_body.insertAdjacentHTML('beforeend', style_text); }} // 記事末尾に style.asaを追加
            else{
                e.stopImmediatePropagation();
                alert(
                    " ⛔ Auto Style Attach\n"+
                    "   常設 styleタグ の書込み・更新のため\n"+
                    "   通常表示画面から投稿をしてください"); }}

    } // catch_publish()

} // main()



 

 

 

「Auto Style Attach ⭐」最新版について 

旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。

 

●「Auto Style Attach ⭐」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。