「svg画像」による投稿不能を回避 

現在「svg画像」を記事内に使用できません。 しかし、過去に記事に記入した「svg画像」は、そのまま温存されています。 もし、たまたまその記事を再編集すると、「禁止タグ」が含まれている事になり、保存が出来なくなります。

 

「SVG Repair ⭐」は、記事を再編集で開いた段階で「svg画像」の有無をチェックして知らせます。 このチェックツールが必要なユーザーは、「svg画像」の掲載方法を知るユーザーや、特別なツールを利用しているユーザーに限られます。 しかし、無くてはならない場合もあり得るので、基幹ツールに指定して更新しました。

 

「SVG Repair ⭐」の扱い方や仕様については、下のページを参照ください。

 

 

 

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

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

 

 

 

今回の更新で追加した「起動を表示するコード」は以下の部分です。

 

「SVG Repair ⭐」 ver. 0.4   35行~

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

    let editor_iframe;
    let iframe_doc;
    ~~~

 

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

 

 

 

「SVG Repair ⭐」を利用するには

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

 

❶「Tampermonkey」を導入します

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

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

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

 

 

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

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

 

 

 

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

 

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

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

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

 

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

 

 

〔 SVG Repair ⭐ 〕 ver. 0.5

 

// ==UserScript==
// @name         SVG Repair ⭐
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  「svg画像」のリンクアイコンを自動でテキストに置換え
// @author       Ameba Blog User
// @match        https://blog.ameba.jp/ucs/entry/srventry*
// @exclude      https://blog.ameba.jp/ucs/entry/srventrylist.do*
// @grant        none
// ==/UserScript==


let retry=0;
let interval=setInterval(wait_target, 100);
function wait_target(){
    retry++;
    if(retry>10){
        clearInterval(interval); }
    let target=document.querySelector('#cke_1_contents');
    if(target){
        clearInterval(interval);
        wh(); }}



function wh(){
    main();

    let target=document.querySelector('#cke_1_contents');
    let monitor=new MutationObserver( main );
    monitor.observe(target, {childList: true}); }



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

    let editor_iframe;
    let iframe_doc;

    editor_iframe=document.querySelector('.cke_wysiwyg_frame');
    if(editor_iframe){
        iframe_doc=editor_iframe.contentWindow.document;
        if(iframe_doc){

            let target=iframe_doc.body;
            let monitor=new MutationObserver( in_frame );
            monitor.observe(target, {childList: true, subtree: true});

            in_frame();


            function in_frame(){

                // リンクカードのsvg画像の置換え 🔵
                let svg_icon=iframe_doc.querySelectorAll('.ogpCard_link svg');
                for(let k=0; k<svg_icon.length; k++){
                    let parent_span=svg_icon[k].closest('span');
                    parent_span.innerHTML='∽';

                    let parent_color='';
                    if(parent_span.style.fill && parent_span.style.fill !='currentColor'){
                        parent_color=parent_span.style.fill; }
                    let css=
                        'height: 14px; width: 16px; font: bold 14px/17px Meiryo; '+
                        'transform: rotate(135deg);';
                    if(parent_color !=''){
                        css +=' color: '+ parent_color; }
                    parent_span.setAttribute('style', css); }



                // Blockquoteのsvg画像の置換え 🔵
                let svg_quote=iframe_doc.querySelectorAll('blockquote svg');
                for(let k=0; k<svg_quote.length; k++){

                    let bq_set=0; // デザイン種
                    for(let i=0; i<10; i++){
                        if(svg_quote[k].classList.contains('m'+i)){
                            bq_set=i;
                            break; }}

                    let new_quote='<i class="bqm m'+ bq_set +'" style="position: absolute; ';
                    if(bq_set<5){
                        let quote_color=svg_quote[k].style.fill;
                        new_quote+=
                            'top: -8px; left: 10px; font-size: 48px; '+
                            'background: transparent; color: '+quote_color+';">❝</i>'; }
                    else if(bq_set==5){
                        new_quote+=
                            'top: -8px; left: 10px; font-size: 0; '+
                            'background: transparent;"> </i>'; }
                    else if(bq_set>5){
                        new_quote+=
                            'top: -4px; left: -23px; font-size: 40px; '+
                            'background: transparent; color: #fff; '+
                            'filter: drop-shadow(1px 1px 1px black);">❝</i>'; }

                    svg_quote[k].insertAdjacentHTML('afterend', new_quote);
                    svg_quote[k].remove(); }



                // リンクカード以外のsvg画像のハイライト 🔵
                let svg_img=iframe_doc.querySelectorAll('svg');
                if(svg_img.length>0){
                    let svg_style=
                        '<style class="svg_style">svg { outline: 2px solid red; }</style>';

                    if(!iframe_doc.querySelector('.svg_style')){
                        iframe_doc.documentElement.insertAdjacentHTML('beforeend', svg_style); }}

                // svg画像数をパネルに表示 🔵
                count_svg();

                function count_svg(){
                    let svg_img=iframe_doc.querySelectorAll('svg');

                    if(svg_img.length>0){
                        let disp=
                            '<div class="svg_count" '+
                            'style="position: fixed; top: 60px; left: 20px; font: 16px Meiryo; color: #fff; '+
                            'padding: 5px 15px 3px; border: 1px solid #fff; background: red; z-index: 30; ">'+
                            'SVG画像:<b>'+ svg_img.length +'</b></div>';
                        if(document.querySelector('.svg_count')){
                            document.querySelector('.svg_count').remove(); }
                        document.body.insertAdjacentHTML('beforeend', disp); }

                    if(svg_img.length==0){
                        if(document.querySelector('.svg_count')){
                            document.querySelector('.svg_count').remove(); }}} // count_svg()

            } // in_frame()

        }}

} // main()



 

 

 

「SVG Repair ⭐」最新版について 

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

 

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