「style属性」➔「styleタグ」の表仕変更
通常のブログ編集では、お使いの「Blog Table ⭐」だけで充分です。 しかし、この「Converter」が必要になる場合は、以下の場合が考えられます。
「ver.4.0」以前の「Blog Table ⭐」で作った「表」は、表更新をする度に「Blog Table ⭐」を以前のバージョンに切り換える必要がありますが、「表の仕様変換」をすれば、以降は「Blog Table ⭐」の切換えが不要になります。 また「変換」後は、最近に追加された機能を使った「表更新」が可能になります。
過去の記事で作成した「表」のデータ量(使用文字数)が大きいため、記事の文字制限で「表」の行追加などの拡張が出来ない場合。 セル数が多い「表」で「表仕様」を変換すると、書き込んだ内容はそのままで「表のHtmlコード」の文字数を大幅に減らす事が出来ます。
ver. 4.0以降に対応 2024.02.02 更新
「Converter」を使う準備
変換する「表」がある記事を開く前に、「Tampermonkey」の「ダッシュボード」で以下の操作を確実に行ってください。 これはツールどうしがコンフリクト(競合)するのを避けるための必須の操作です。
●「Blog Table ⭐」をOFF、「Blog Table ⭐ Converter」をON にします。
また、変換操作が終了した後は、速やかに「Blog Table ⭐ Converter」をOFFにしてください。
「Converter」の起動と変換処理
● 変換する「表」がある記事を編集画面に開き、「Ctrl+F1」のショートカットを押します。
下の様な「ブルー」のパネルと、説明が表示されます。
以下は、説明の内容のコピーです。
表のスタイル指定のためのコードを styleタグに纏める処理で、
表データを失う事は通常は生じませんが、HTML編集によって
デザインした表は、デザインの崩れを生じる場合があります。
そのため、データの多い表・貴重な表を含む記事は、記事を
複製した上でこのツールを利用する事をお勧めします。
また、軽量化をした表は「Blog Table ⭐」ver.4.0 以降でな
ないと表の更新ができなくなります。
▪ この説明の表示は、右上の「✖」を押すと消えます。
変換する「表」を選択する
● 変換する「表」を「Ctrl+左Click」して選択します。
▪「表」が記事上に複数ある場合、「表」を1個ずつ選択して変換操作ができます。
▪ 選択した「表」が、「Styleタグ」を使った仕様の場合は、変換する必要がないので、以下の表示が出ます。 別の「表」を選択するか、変換を終了してください。
変換対象の表を選択すると、「Converter」の「操作パネル」が表示されます。
「Blog Table ⭐ Converter」の「操作パネル」は「Blog Table ⭐」に似ています。 しかし、各ボタンは選択した「表」の設定を表示しますが、その変更操作は一切できません。「Converter」は、あくまで「表の仕様」を変換するためのツールです。
変換の実行
「操作パネル」で操作が出来るのは、右端の「軽量化」のボタンだけです。
●「軽量化」ボタンを「左Click」すると、「表」に変換処理が行われます。
▪ すぐに下の表示が出て、変換が行われた事を知らせます。
この表に対する変換操作は、これだけで終了です。
▪ 既にこの表は「styleタグ」の仕様に変わっているので、もう一度「選択」すると「変換処理の対象外」の表示が出ます。
変換処理の終了
●「Ctrl+F1」のショートカットを押して「Converter」を終了してください。
▪ 変換操作の終了後は、速やかに「Blog Table ⭐ Converter」をOFFにします。
「Blog Table ⭐ Converter」の注意事項
このツールは「Blog Table ⭐」の「ver.2.2」~「ver.3.6」で作った「表」を処理対象としています。
このツールで「変換」処理を行った際、以下の場合には、表のレイアウトが崩れる可能性が考えられます。
❶「Blog Table ⭐」で作った「表」に Html編集をして高度なデザインを適用している場合、「変換」処理は「表」の各要素から「style属性」を削除するため、Html編集の内容も削除される可能性が大です。
一旦削除した「style属性」は戻せないので、この可能性がある場合は、必ず記事の複製などでバックアップを作った上で、「変換」処理をテストしてください。
❷「変換」処理で生成される「styleタグ」は、変換元の「style属性」を忠実にコピーします。 これは、変換元のレイアウトをできるだけ損なわないためです。
但し、「ver.3.5」以降の「Blog Table ⭐」が生成する「表」は、それまでに無かった「word-break」の指定を含んでいます。 これは、書き込まれた「半角英数文字」が「表」のレイアウトを損なう場合が多いため、「英文の禁則処理」をコントロールする指定です。
「word-break」の指定は今後の「Blog Table ⭐」で標準なので、「Converter」は「変換」に際してこの指定を追加します。 ただし、既存の「表」のデザインへの影響を考慮して、以下の指定を「styleタグ」に追加します。
変換元の「word-break」の指定 | 変換後の「word-break」の指定 |
指定自体が無い | word-break: unset |
word-break: unset | word-break: unset |
word-break: break-all | word-break: break-all |
word-break: breal-word | word-break: breal-word |
それでも何等かの変化や崩れが生じる場合は、以下の対策を判断してください。
◎「変換」した「表」に「崩れ」が生じた場合は、決してその記事を保存しない。
◎「表」に記入したテキスト等の更新は「表更新」は不要です。 列・行などの変更が必要な場合は、「ver4.0」以前の「Blog Table ⭐」で「表更新」を行う。
◎「表」の「変換」がどうしても必要な場合は、記事を複製して、その記事で「変換」を行い、崩れた場所を手作業で修正する。 これは修正の予行演習で、納得できる修正ができれば、オリジナルの記事で「変換」➔「修正」を行う。
「「Blog Table ⭐ Converter」を利用するには
このツールは Chrome / Edge / Firefox版の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
〔 Blog Table ⭐ Converter 〕 ver. 4.0
// ==UserScript== // @name Blog Table ⭐ Converter // @namespace http://tampermonkey.net/ // @version 4.0 // @description 編集画面上のtable表の表仕様変換ツール // @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){ // リトライ制限 10回 1sec clearInterval(interval); } let target=document.getElementById('cke_1_contents'); // 監視 target if(target){ clearInterval(interval); main(); }} function main(){ let ua=0; // Chromeの場合のフラグ let agent=window.navigator.userAgent.toLowerCase(); if(agent.indexOf('firefox') > -1){ ua=1; } // Firefoxの場合のフラグ let task=0; // 起動1・作成2・更新3・終了0 let trim=0; // 追加0・削除1 let cell_set=0; // セル幅設定パネルの列選択 let posit_set; // 中央寄せ・左寄せ let table_position; let border_collapse; let add_padd; // td のpadding値 let layout_fix; // table-layout設定 let table_border_width; let cell_border_width; let border_space; let left_full; // 左端背景色の優先 let color_input=[]; // 4個のカラー設定枠 let word_break; // 英文禁則 let target=document.getElementById('cke_1_contents'); // 監視 target let monitor=new MutationObserver( catch_key ); monitor.observe(target, {childList: true, attributes: true}); // ショートカット待受け開始 catch_key(); function catch_key(){ if(document.querySelector('.cke_wysiwyg_frame') !=null){ //「通常表示」から実行開始 let editor_iframe=document.querySelector('.cke_wysiwyg_frame'); let iframe_doc=editor_iframe.contentWindow.document; iframe_doc.addEventListener('keydown', check_key); document.addEventListener('keydown', check_key); function check_key(event){ if(event.keyCode==13 && iframe_doc.hasFocus()){ remove_mark(); } // 改行入力が連続マークとなるのを抑止 let gate=-1; if(event.ctrlKey==true){ if(event.keyCode==112){ event.preventDefault(); gate=1; } if(gate==1){ event.stopImmediatePropagation(); do_task(); }}} function do_task(){ if(task==0){ caution(); task=1; table_panel(); enhanced(); } else{ task=0; remove_t_panel(); remove_mark_all(); }}} before_end(); } // catch_key() function caution(){ let disp= '<div class="caution_disp">'+ '<span>'+ '「Blog Table ⭐」ver.4.0 以前で作成した表を軽量化します。<br>'+ '表のスタイル指定のためのコードを styleタグに纏める処理で、<br>'+ '表データを失う事は通常は生じませんが、HTML編集によって<br>'+ 'デザインした表は、デザインの崩れを生じる場合があります。<br>'+ 'そのため、データの多い表・貴重な表を含む記事は、記事を<br>'+ '複製した上でこのツールを利用する事をお勧めします。<br><br>'+ 'また、軽量化をした表は「Blog Table ⭐」ver.4.0 以降でな <br>'+ 'ないと表の更新ができなくなります。<br>'+ '</span>'+ '<input type="button" class="x" value="✖">'+ '<style>'+ '.caution_disp { position: absolute; top: 120px; left: calc( 50% - 425px); '+ 'width: 520px; height: auto; font: 18px Meiryo; background: #fff; '+ 'padding: 40px; border: 2px solid #aaa; z-index: 20; }'+ '.x { position: absolute; top: 8px; right: 9px; padding: 2px 7px 0; }'+ '</style></div>'; if(!document.querySelector('.caution_disp')){ document.body.insertAdjacentHTML('beforeend', disp); } let caution_disp=document.querySelector('.caution_disp'); let x=document.querySelector('.caution_disp .x'); if(x){ x.onclick=(()=>{ caution_disp.remove(); }); }} function table_panel(){ let panel= '<div id="t_panel">'+ '<span class="t_label">構成</span>'+ '<div class="wnc"><input id="col" type="number" min="1"></div>'+ '<div class="wnr"><input id="row" type="number" min="1"></div>'+ '<span class="t_label">配置</span>'+ '<input id="wide" type="submit" value=" ">'+ '<span class="t_label">表幅</span>'+ '<div class="wpxt"><input id="t_width" type="number" min="10" max="1000"></div>'+ '<input id="t_width_m" type="submit" value="м">'+ '<input id="td_padd" type="submit" value=" ">'+ '<input id="equal" type="submit" value=" ">'+ '<span class="t_label">枠線</span>'+ '<div class="wpx"><input id="border_width" type="number" min="-9"></div>'+ '<input id="border_color" type="text" autocomplete="off">'+ '<span class="t_label">最上行背景</span>'+ '<input id="header_back" type="text" autocomplete="off">'+ '<span class="t_label">左端列背景</span>'+ '<input id="left_back" type="text" autocomplete="off">'+ '<input id="left_back_f" type="submit" value="▲">'+ '<span class="t_label">全体背景</span>'+ '<input id="cell_back" type="text" autocomplete="off">'+ '<span class="t_label">文字</span>'+ '<div class="wpx"><input id="t_font" type="number" min="12" max="32"></div>'+ '<input id="set" type="submit" value=" ">'+ '<span id="test"></span>'+ '<div id="first">'+ '<span id="bt_help">?</span>'+ '<div class="bt_help1">'+ '軽量タイプに変更する表を<b>「Ctrl+左Click」</b>で指定します '+ '<b>「軽量化」</b>以外のボタンは機能しません</div>'+ '</div>'+ '<style>'+ '#t_panel { position: fixed; top: 15px; left: calc(50% - 490px); width: 954px; '+ 'font-size: 14px; padding: 6px 12px; overflow: hidden; '+ 'border: 1px solid #ccc; border-radius: 4px; background: #eff5f6; z-index: 10; }'+ '#t_panel * { user-select: none; }'+ '#t_panel input { position: relative; margin-right: 10px; padding-top: 2px; '+ 'height: 27px; box-sizing: border-box; border: thin solid #aaa; }'+ '#t_panel input[type="number"] { padding-right: 2px; margin-right: 0; }'+ '#t_panel input[type="number"]:focus, #t_panel input[type="submit"]:focus '+ '{ box-shadow: none; }'+ '.t_label { margin: 0 3px 0 0; }'+ '#col, #row { width: 40px; text-align: center; }'+ '#wide { width: 30px; letter-spacing: -0.5em; text-indent: -6px; }'+ '#t_width { width: 54px; text-align: center; }'+ '#t_width_m { margin-left: -9px; width: 14px; }'+ '#td_padd { width: 30px; margin-left: 2px; }'+ '#equal { width: 34px; }'+ '#border_width { width: 40px; text-align: center; }'+ '#left_back_f { margin-left: -9px; width: 14px; text-indent: -1px; }'+ '#t_font { width: 40px; text-align: center; }'+ '#wide, #t_width_m, #td_padd, #equal, #left_back_f { background: #fff; }'+ '.wnc, .wnr, .wpx, .wpxt { position: relative; display: inline-block; }'+ '.wnc { margin-right: 2px; }'+ '.wnr, .wpx, .wpxt { margin-right: 10px; }'+ '.wnc::after { content: "列"; }'+ '.wnr::after { content: "行"; }'+ '.wpx::after, .wpxt::after { content: "px"; }'+ '.wnc::after, .wnr::after, .wpx::after, .wpxt::after { position: absolute; right: 2px; '+ 'top: 2px; padding: 3px 0 0; width: 17px; background: #fff; }'+ '.wpx:hover::after, .wpxt:hover::after, .wnc:hover::after, .wnr:hover::after '+ '{ content: ""; }'+ '.wpxt.lock { pointer-events: none; background: #80deea; }'+ '.wpxt.lock::after { background: inherit; }'+ '.wpxt.lock #t_width { background: inherit; }'+ '#t_width_m.lock { pointer-events: none; background: #80deea !important; }'+ '#border_color { margin-left: -9px; }'+ '#border_color, #header_back, #left_back, #cell_back { '+ 'width: 0; padding: 2px 16px 0 0; cursor: pointer; }'+ '#border_color:focus, #header_back:focus, #left_back:focus, #cell_back:focus { '+ 'width: 99px; margin-right: -71px; padding: 2px 0 0 22px; z-index: 1; cursor: text; }'+ '#set { margin: 0 !important; padding: 2px 12px 0; float: right; font-size: 16px; }'+ '#set:hover { background: #fff; color: #000; }'+ '#set { background: #e01919; color: #fff; }'+ '#first { position: absolute; top: 0; left: 0; color: #fff; background: #2196f3; '+ 'width: 100%; padding: 10px 0; font-size: 16px; text-align: center; }'+ '#bt_help { position: absolute; top: 11px; right: 25px; padding: 2px 1px 0; '+ 'line-height: 16px; font-weight: bold; border-radius: 30px; '+ 'color: #2196f3; background: #fff; cursor: pointer; }'+ '.bt_help1 { text-align: left; margin-left: 60px; }'+ '#test { display: none; }'+ '#cke_42 { top: 60px !important; left: calc( 50% - 45px) !important; }'; if(ua==1){ panel += '.wpx::after, .wpxt::after { padding: 3px 1px 0; }'+ '.wnc::after { padding: 3px 1px 0; }'+ '.wnr::after { padding: 3px 1px 0; }'; } panel += '</style>'+ '</div>'; if(!document.querySelector('#t_panel')){ document.body.insertAdjacentHTML('beforeend', panel); } } // table_panel() function enhanced(){ let target_r=document.getElementById('cke_1_contents'); // 監視 target let monitor_r=new MutationObserver(select); monitor_r.observe(target_r, {childList: true}); // ショートカット待受け開始 select(); function select(){ if(document.querySelector('.cke_wysiwyg_frame') !=null){ //「通常表示」から実行開始 remove_mark_all(); // Html編集後のリセット show_first(1); let editor_iframe=document.querySelector('.cke_wysiwyg_frame'); let iframe_doc=editor_iframe.contentWindow.document; if(iframe_doc){ let style_if= '<style id="style_if">'+ '.amb_active { box-shadow: #fff -4px 0px, red -8px 0px !important; }'+ '</style>'; if(!iframe_doc.head.querySelector('#style_if')){ iframe_doc.head.insertAdjacentHTML('beforeend', style_if); } let editor=iframe_doc.querySelector('.cke_editable'); if(editor){ editor.onclick=function(event){ event.stopImmediatePropagation(); if(event.ctrlKey){ remove_mark_all(); if(task==1 || task==2 || task==3 || task==4){ let elm=iframe_doc.elementFromPoint(event.clientX, event.clientY); if(elm.closest('table')!=null){ let table_id=elm.closest('table').id; if(table_id && table_id.includes('ambt')){ let style_tag=elm.closest('table').previousElementSibling; if(style_tag && style_tag.classList.contains(table_id)){ remove_mark(); show_first(1); setTimeout(()=>{ alert(" ⛔ 選択した表は 軽量タイプの表で 処理の対象ではありません"); },20 ); } else{ elm.closest('table').parentNode.classList.add('amb_active'); show_first(0); task=3; check_available(elm.closest('table')); edit_table(task, elm.closest('table')); }}}}}} //「表更新」 }}}} // select() } // enhanced() function table_position_set(){ let wide=document.querySelector('#wide'); // 中央配置・左寄せの設定 if(posit_set==0){ wide.value=' ▢ '; table_position='0 auto'; } else if(posit_set==1){ wide.value='▢ '; table_position='0 auto 0 0'; }} function t_width_lock(r_table){ let count=0; let top_td=r_table.querySelectorAll('tr:first-child td'); for(let k=0; k<top_td.length; k++){ if(top_td[k].style.width){ count+=1; }} if(count>0){ table_lock(1); } else{ table_lock(0); }} function table_lock(n){ let wpxt=document.querySelector('.wpxt'); // 表幅 let t_width_m=document.querySelector('#t_width_m'); // MEMO if(n==0){ wpxt.classList.remove('lock'); t_width_m.classList.remove('lock'); } else{ wpxt.classList.add('lock'); t_width_m.classList.add('lock'); }} function td_padding_set(){ let td_padd=document.querySelector('#td_padd'); // tdの横padding 有無の設定 if(add_padd=='0'){ td_padd.value='p0'; td_padd.style.boxShadow='none'; } else{ td_padd.value='p+'; td_padd.style.boxShadow='inset 6px 0 0 #cefed0, inset -6px 0 0 #cefed0'; }} function lafix_set(task, r_table){ let equal=document.querySelector('#equal'); // table-layout の設定 if(layout_fix=='fixed'){ equal.value='Fix'; equal.style.background='#80deea'; } else{ layout_fix='auto'; equal.value='Auto'; equal.style.background='#fff'; }} function table_border_set(){ let border_width=document.querySelector('#border_width'); // 枠線幅の設定 two_way(); function two_way(){ if(border_width.value>-1){ border_collapse='collapse'; table_border_width=0; cell_border_width=border_width.value; border_space=0; } else if(border_width.value<0){ border_collapse='separate'; table_border_width=1; cell_border_width=1; border_space=border_width.value*(-1); }}} function left_full_set(){ let left_back_full=document.querySelector('#left_back_f'); // 左端色を最上行まで設定 if(left_full==' tr:not(:first-child)'){ left_back_full.style.color='#aaa'; left_back_full.style.boxShadow='none'; } else{ left_back_full.style.color='red'; left_back_full.style.boxShadow='inset 0 5px red'; }} function sticky_color(box){ box.style.boxShadow='inset 17px 0 '+ box.value +', inset 18px 0 #aaa'; } function edit_table(task, r_table){ let editor_iframe=document.querySelector('.cke_wysiwyg_frame'); let iframe_doc=editor_iframe.contentWindow.document; let this_col; // 更新前の列数 let this_row; // 更新前の行数 let col=document.querySelector('#col'); // 列数の設定 let row=document.querySelector('#row'); // 行数の設定 let wide=document.querySelector('#wide'); // 配置 let t_width=document.querySelector('#t_width'); // 表全幅の設定 let t_width_m=document.querySelector('#t_width_m'); // Memo let td_padd=document.querySelector('#td_padd'); // Padd let equal=document.querySelector('#equal'); // Fix let border_width=document.querySelector('#border_width'); // 枠線幅の設定 let border_color=document.querySelector('#border_color'); // 枠線色の設定 let header_back=document.querySelector('#header_back'); // 最上行背景色の設定 let left_back=document.querySelector('#left_back'); // 左端行背景色の設定 let left_back_f=document.querySelector('#left_back_f'); let cell_back=document.querySelector('#cell_back'); // 全体背景色の設定 let t_font=document.querySelector('#t_font'); // 文字サイズの設定 let set=document.querySelector('#set'); // 作成ボタン col.disabled=true; row.disabled=true; wide.disabled=true; t_width.disabled=true; t_width_m.disabled=true; td_padd.disabled=true; equal.disabled=true; border_width.disabled=true; border_color.disabled=true; header_back.disabled=true; left_back.disabled=true; left_back_f.disabled=true; cell_back.disabled=true; t_font.disabled=true; if(task==3){ set.value='軽量化'; table_renew(r_table); } function table_renew(r_table){ t_width_lock(r_table); let t_tr=r_table.querySelectorAll('tr'); row.value=t_tr.length; let t_td=r_table.querySelectorAll('td'); col.value=t_td.length / t_tr.length; let margin_g=r_table.style.margin; if(margin_g && margin_g.includes('0px auto 0px 0px')){ posit_set=1; } else { posit_set=0; } table_position_set(); let t_width_g=r_table.style.width; if(t_width_g){ t_width.value=t_width_g.replace(/[^0-9]/g, ''); } else{ t_width.value=580; } let add_padd_g=t_td[t_td.length-1].style.paddingLeft; if(add_padd_g){ add_padd=add_padd_g.slice(0, -2); } // 表末尾の「td」の padding else{ add_padd=0; } td_padding_set(); if(r_table.style.tableLayout=='fixed'){ layout_fix='fixed'; } else{ layout_fix='auto'; } lafix_set(3, r_table); let t_border_width_g=t_td[t_td.length-1].style.borderWidth; let t_border_width; if(t_border_width_g){ t_border_width=t_border_width_g.replace(/[^0-9]/g, ''); } // 表末尾の「td」の border else{ t_border_width=1; } let border_space_g=r_table.style.borderSpacing; if(border_space_g){ border_space=border_space_g.replace(/[^0-9]/g, ''); } else{ border_space=0; } if(border_space!=0){ border_width.value=border_space*(-1); } if(border_space==0){ border_width.value=t_border_width; } table_border_set(); if(t_td[0].style.backgroundColor==''){ // 表先頭「td」の背景色指定の有無 left_full=' tr:not(:first-child)'; } else{ left_full=' tr'; } left_full_set(); let t_border_color=t_td[t_td.length-1].style.borderColor; // 表末尾の「td」の border色 if(t_border_color==''){ t_border_color='#999'; } border_color.value=rgb_hex(t_border_color); sticky_color(border_color); let t_header_back=t_tr[0].style.backgroundColor; // 最初の「tr」の背景色 if(t_header_back==''){ t_header_back='#F4F4F4'; } header_back.value=rgb_hex(t_header_back); sticky_color(header_back); let t_left_back; if(t_tr.length>1){ t_left_back=t_td[t_td.length / t_tr.length].style.backgroundColor; // 左端列 背景色 1 if(t_left_back==''){ t_left_back='#F4F4F4'; }} else{ t_left_back=t_td[0].style.backgroundColor; // 左端列 背景色 2 if(t_left_back==''){ t_left_back='#F4F4F4'; }} left_back.value=rgb_hex(t_left_back); sticky_color(left_back); let t_cell_back=r_table.style.backgroundColor; // 表「r_table」の 背景色 if(t_cell_back==''){ t_cell_back='#FFF';} cell_back.value=rgb_hex(t_cell_back); sticky_color(cell_back); let t_font_size=r_table.style.fontSize; if(t_font_size==''){ t_font.value='16'; } else{ t_font.value=t_font_size.replace(/[^0-9]/g, ''); } let t_word_break=r_table.style.wordBreak; if(t_word_break==''){ word_break='unset'; } else{ word_break=t_word_break; } set.onclick=function(){ if(task==3){ let t_tr=r_table.querySelectorAll('tr'); this_row=t_tr.length; let t_td=r_table.querySelectorAll('td'); this_col=t_td.length / t_tr.length; renew_style(r_table); r_table.removeAttribute('style'); let first_tr=r_table.querySelectorAll('tr')[0]; if(first_tr){ first_tr.removeAttribute('style'); } let top_td=r_table.querySelectorAll('tr:first-child td'); top_td[0].style.backgroundColor=''; // コーナーの「td」の背景をリセット for(let k=0; k<top_td.length; k++){ top_td[k].style.border=''; top_td[k].style.padding=''; top_td[k].style.height=''; } let low_td=r_table.querySelectorAll('tr:not(:first-child) td'); for(let k=0; k<low_td.length; k++){ low_td[k].removeAttribute('style'); } if(layout_fix=='fixed'){ //「Fix」モード時のtable幅適正化 let wpxt=document.querySelector('.wpxt'); // 表幅 if(!wpxt.classList.contains('lock')){ //「Fix」モードで幅可変 let top_td=r_table.querySelectorAll('tr:first-child td'); for(let k=0; k<top_td.length; k++){ let set_w=getComputedStyle(top_td[k]).width; if(set_w && !top_td[k].style.width){ top_td[k].style.width=set_w; }}} t_width_lock(r_table); t_width.value=''; renew_style(r_table); let t_width_g=getComputedStyle(r_table).width; if(t_width_g){ t_width.value=Math.ceil((t_width_g.replace('px', ''))); } // 切り上げ else{ t_width.value=580; } renew_style(r_table); } setTimeout(()=>{ check_available(r_table); alert(" 🟢 軽量化への変換処理を行いました"); }, 1000); }} // set.onclick() } // table_renew() } // edit_table() function renew_style(r_table){ let table_id=r_table.id; let table_style=r_table.parentElement.querySelector('.'+ table_id); if(table_style){ table_style.textContent=set_css(table_id); } else{ let t_style='<style class="'+ table_id +'">'+ set_css(table_id) +'</style>'; r_table.insertAdjacentHTML('beforeBegin', t_style); }} function set_css(t_id){ let t_width=document.querySelector('#t_width'); // 表全幅の設定 let border_color=document.querySelector('#border_color'); // 枠線色の設定 let header_back=document.querySelector('#header_back'); // 最上行背景色の設定 let left_back=document.querySelector('#left_back'); // 左端行背景色の設定 let cell_back=document.querySelector('#cell_back'); // 全体背景色の設定 let t_font=document.querySelector('#t_font'); // 文字サイズの設定 return '#'+ t_id + ' { '+ 'width: '+ t_width.value +'px; '+ 'margin: '+ table_position +'; '+ 'table-layout: '+ layout_fix +'; '+ 'border-collapse: '+ border_collapse +'; '+ 'border-spacing: '+ border_space +'px; '+ 'border: '+ table_border_width +'px solid '+ border_color.value +'; '+ 'font: '+ t_font.value +'px Meiryo; '+ 'background-color: '+ cell_back.value +'; '+ 'word-break: '+ word_break +'; } '+ '#'+ t_id +' tr:first-child { background-color: '+ header_back.value +'; } '+ '#'+ t_id + left_full +' td:first-child { background-color: '+ left_back.value +'; } '+ '#'+ t_id +' td { border: '+ cell_border_width +'px solid '+ border_color.value + '; padding: 0.2em '+ add_padd +'em 0; height: 1.5em; }'; } function remove_t_panel(){ document.querySelector('#t_panel').remove(); } function remove_mark(){ if(document.querySelector('.cke_wysiwyg_frame') !=null){ //「通常表示」から実行開始 let editor_iframe=document.querySelector('.cke_wysiwyg_frame'); let iframe_doc=editor_iframe.contentWindow.document; let active_item=iframe_doc.querySelectorAll('.amb_active'); for(let k=0; k<active_item.length; k++){ active_item[k].classList.remove('amb_active'); }}} function remove_mark_all(){ remove_mark(); } function show_first(n){ let first=document.querySelector('#first'); let bt_help1=document.querySelector('.bt_help1'); if(first){ if(n==0){ first.style.display='none'; } else{ first.style.display='block'; bt_help1.style.display='none'; if(n==1){ bt_help1.style.display='block'; }}} let bt_help=document.querySelector('#bt_help'); if(bt_help){ bt_help.onclick=function(){ let url='https://ameblo.jp/personwritep/entry-12838591802.html'; window.open(url, target="_blank"); }}} function check_available(test_table){ let table_id=test_table.id; if(table_id && table_id.includes('ambt')){ let set=document.querySelector('#set'); // 作成ボタン let style_tag=test_table.previousElementSibling; if(style_tag && style_tag.classList.contains(table_id)){ set.style.visibility='hidden'; } else{ set.style.visibility=''; }}} function equal_color(R, G, B, A){ // RGBは整数 Aは小数が必須 ➔ 等価 6桁hexコードに変換 return '#' + tohex(upColor(R, A)) + tohex(upColor(G, A)) + tohex(upColor(B, A)); function upColor(value, A){ let color_value=value*A + 255*(1 - A); return Math.floor(color_value); } function tohex(value){ return ('0'+ value.toString(16)).slice(-2); }} function hex_bright(hex){ // 明度を段階的に変換 if(hex.slice(0, 1)=='#'){ hex=hex.slice(1); } if(hex.length==3){ hex=hex.slice(0,1) + hex.slice(0,1) + hex.slice(1,2) + hex.slice(1,2) + hex.slice(2,3) + hex.slice(2,3); } // 透過度 0.6 とした色値に変更 let R=parseInt(hex.slice(0, 2), 16); let G=parseInt(hex.slice(2, 4), 16); let B=parseInt(hex.slice(4, 6), 16); return equal_color(R, G, B, 0.6); } // 非透過色値に変更 function hex_8_6(hex){ // 8桁hex値を6桁hexに変換 if(hex.length!=9 || hex.slice(0, 1)!='#'){ return hex; } else{ hex=hex.slice(1); let R=parseInt(hex.slice(0, 2), 16); let G=parseInt(hex.slice(2, 4), 16); let B=parseInt(hex.slice(4, 6), 16); let A=hex.slice(6, 8); // 16進の「A値」を透過度(小数)に変更 let alp=0; for(let i=0; i<2; i++){ alp +=Math.pow(16, -(i + 1))*parseInt(A[i], 16); } return equal_color(R, G, B, alp); }} // 非透過色値に変更 function rgb_hex(color){ // rgb or rgba 表記をhex6桁表記に変換 if(color.includes('#')){ // hex表記の場合 return color; } else{ // rgb表記の場合 color=color.split('(')[1].split(')')[0].replace(/ /g, ''); let rgb_ar=color.split(','); let R=parseInt(rgb_ar[0], 10); let G=parseInt(rgb_ar[1], 10); let B=parseInt(rgb_ar[2], 10); let A; if(rgb_ar.length==3){ A=1; } else if(rgb_ar.length==4){ A=parseFloat(rgb_ar[3]); } return equal_color(R, G, B, A); }} // 非透過色値に変更 function before_end(){ let submitButton=document.querySelectorAll('.js-submitButton'); submitButton[0].addEventListener('mousedown', all_clear, false); submitButton[1].addEventListener('mousedown', all_clear, false); function all_clear(){ let editor_iframe=document.querySelector('.cke_wysiwyg_frame'); if(!editor_iframe){ //「HTML表示」編集画面の場合 alert("⛔ Blog Table が処理を終了していません\n\n"+ " 通常表示画面に戻り 編集を終了してください"); event.stopImmediatePropagation(); event.preventDefault(); } if(editor_iframe){ //「通常表示」編集画面の場合 remove_mark_all(); } // table編集・TRIM・COLのマークを削除 }} // before_end( } // main()
〔注〕
このツールのバージョン数は、ソースコードのベースとして「Blog Table ⭐」のバージョン数を使っていますが、実際は公開版としては初版です。
「Blog Table ⭐ Converter」最新版について
旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。
●「Blog Table ⭐ Converter」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。