編集画面版の「Body Wcon OD」
ブログページで本文幅を可変表示する「Body Wcon OD」を制作して、同様の機能を「編集画面」の「プレビュー画面」に実装することを考えました。 しかし、良く考えれば、「プレビュー画面」より「編集画面」に実装した方が早い。
特殊フォントの指定やツイッター呼込みの確認などの他は、「プレビュー表示」は殆ど使う必要がなく「通常表示」で足ります。 スマホ表示の「プレビュー」は、機種によって表示結果は変わって来るので、これもあくまで「アバウト」なものです。
となると、「編集画面」の「通常表示」で本文幅を調節できれば、「プレビュー」を開くより素早く、アバウトですがスマホ表示を確認出来ます。 行端の自動改行のチェック機能としての利用は、「編集画面」に実装するとより有効になります。 編集箇所の本文幅を瞬間に切替えて比較できるからです。
「デザイン幅で表示」のチェックボタンで起動
このツールの機能を必要とするユーザーは限られると思うので、ツール名は「Body Wcon」として、独立したツールとしました。
「デザイン幅で表示」のチェックボタンを「OFF」にすると、編集枠の幅は左右いっぱいに拡張します。 この表示はほぼ意味のないものです。 そこで「OFF」の状態にすると「Body Wcon」が起動し、「ON」にすると「Body Wcon」がOFFになる様にしました。
●「通常表示」の編集画面で「デザイン幅で表示」のチェックを「OFF」にします。
▪「Tampermonkey」上で「Body Wcon」を常駐させると、「デザイン幅で表示」のチェックボックスやラベルは、本来より少し左寄りの配置に変わります。
●「チェックボタン」のみを残し、他の部分は下の様に変わります。
▪左端は編集枠内の「本文幅」の値を表示します。
▪「コントロール」の最大値は現在の編集枠を全て使う幅、最小値は 280pxです。
●「コントロール」をドラッグする事で、自由に「本文幅」を変更できます。
▪「コントロール」にフォーカスがある場合は「⇦」「⇨」キーで調節できます。
▪ 幅値はローカルストレージに記録され、次回の編集時にも再現されます。
●「チェックボックス」にチェックを入れると「Body Wcon」が終了します。 編集枠の幅は、本来の「デザイン幅で表示」の状態に戻ります。
「Body Wcon」を利用するには
このツールは Chrome / Edge / Firefox版の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 右サイドバーの マークのボタンを1度押してください。
コード枠内の右クリック ➔ コード全体の選択 ➔ コピー操作 が可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
〔 Body Wcon 〕 ver. 0.1
// ==UserScript== // @name Body Wcon // @namespace http://tampermonkey.net/ // @version 0.1 // @description 編集画面「デザイン幅で表示」のOFF時に幅コントロール // @author Ameba Blog User // @match https://blog.ameba.jp/ucs/entry/srventry* // @exclude https://blog.ameba.jp/ucs/entry/srventrylist* // @icon https://www.google.com/s2/favicons?sz=64&domain=ameba.jp // @grant none // ==/UserScript== let editorStyle=document.querySelector('.p-editorStyle'); if(editorStyle){ editorStyle.style.width='250px'; // 固定デザイン let applyStyleWidth=document.querySelector('#applyStyleWidth'); if(applyStyleWidth){ applyStyleWidth.addEventListener('input', function(){ if(applyStyleWidth.checked){ show_off(); } else{ show_on(); } }); }} function show_on(){ let bwidth=localStorage.getItem('BodyWcon'); // モバイル ディスプレイ幅値 🔵 if(!bwidth){ bwidth=360; } let cont= '<div id="con_container">'+ '<span id="con_val"></span>'+ '<input id="width_con" '+ 'type="range" min="280" value="620" step="1">'+ '<style>'+ '#con_val { display: inline-block; width: 36px; font-size: 14px; vertical-align: 3px; }'+ '.p-editorStyle { width: 250px; }'+ '#applyStyleWidthLabel { font-size: 0; }'+ '#js-editorStyleQuestion, js-editorStyleBalloon { display: none; }'+ '#con_container { display: inline-block; width: 200px; }'+ '#width_con { width: calc(100% - 40px); }'+ '</style></div>'; if(!document.querySelector('#width_con')){ editorStyle.insertAdjacentHTML('beforeend', cont); } let width_con=document.querySelector('#width_con'); let con_val=document.querySelector('#con_val'); 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 cont_iframe='<style id="editer_width_con"></style>'; if(!iframe_body.querySelector('#editer_width_con')){ iframe_body.insertAdjacentHTML('beforeend', cont_iframe); } let editer_width_con=iframe_doc.querySelector('#editer_width_con'); let max_width=editor_iframe.getBoundingClientRect().width - 32; width_con.max=max_width; width_con.value=bwidth; con_val.textContent=bwidth; editer_width_con.textContent= 'body.cke_editable { width: '+(bwidth/1 + 16) +'px !important; }'; width_con.addEventListener('input', function(){ bwidth=width_con.value; con_val.textContent=bwidth; editer_width_con.textContent= 'body.cke_editable { width: '+(bwidth/1 + 16) +'px !important; }'; localStorage.setItem('BodyWcon', bwidth); // 機種ディスプレイ幅セット 🔵 }); }}} } // show_on() function show_off(){ let editor_iframe=document.querySelector('.cke_wysiwyg_frame'); if(editor_iframe){ // iframe読込みが実行条件 let iframe_doc=editor_iframe.contentWindow.document; if(iframe_doc){ let editer_width_con=iframe_doc.querySelector('#editer_width_con'); if(editer_width_con){ editer_width_con.remove(); }}} let con_container=document.querySelector('#con_container'); if(con_container){ con_container.remove(); } } // show_off()
「Body Wcon」最新版について
旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。
●「Body Wcon」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。