プロジェクト

全般

プロフィール

サポート #114

完了

はてなブログの編集領域を等幅フォントにしたい

高橋 徹 さんがほぼ4年前に追加. 3年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
カテゴリ:
-
開始日:
2020/05/06
期日:
2020/05/10
進捗率:

100%

予定工数:

説明

はてなブログの編集領域はプロポーショナルフォントとなっているので、ソースコード断片の記述、表組の記述などに甚だ不適である。
そこで、編集領域を等幅フォントとする。

結論

  • 対処方法を見つけること能わず
  • 編集領域(HTMLのTEXTAREA要素)は、ブログページのiframe内にあるため、通常のCSSセレクタでは設定ができない。
    → iframe内のHTML要素の中からスタイルシートを指定するかスタイルを記述する必要がある。
  • stylusプラグインを使う方法も、iframeに阻まれて設定が見出せず
    → はてなブログの編集用iframeにはsrc属性が未定義

関連するチケット 1 (1件未完了0件完了)

関連している サポート #115: はてなブログのコードブロックの見栄えを改善する進行中高橋 徹2020/05/062020/05/10

操作

高橋 徹 さんがほぼ4年前に更新

  • 関連している サポート #115: はてなブログのコードブロックの見栄えを改善する を追加

高橋 徹 さんがほぼ4年前に更新

  • 説明 を更新 (差分)
  • ステータス新規 から 進行中 に変更
  • 進捗率0 から 50 に変更

はてなブログの編集画面をWebブラウザの開発者モードで解析すると、要素を選択したときに表示される範囲がずれている。

→ はてなブログで編集画面に入ると、元のブログ画面が下に、その上に編集画面が重なっている(iframe)

要素ツリーで追うと次の構造

html
+ body class="page-entry" 
  + div id="hatena-diary-edit-in-place" calss="hatena-iframe-container" 
    + iframe 
      + html 
         + body class="body-iframe page-user-blog-edit blog-edit-in-place" 
           + div id="editor" class="l-editor" 
             + form id="edit-form" class="editor-container hatena-diarcy-editor-container unedited" 
               + div id="editor-main" class="l-editor-main"  
                 + div class="editor-main-inner" 
                   + div class="tabs editor-tabs-wrapper" 
                     + div id="textarea" class="ui-tabs-panel ui-widget-content" 
                       + div class="body editor-body" 
                         + div class="editarea" 
                           + textarea id="body" class="editor-body-textarea" 

この textarea 要素のフォントは、Segoe UI、Meiryo が適用されている。ならば、id=bodyのtextarea要素にCSSでフォントを割り当てればと次のCSSを設定してみたがNG。!importantを追記してもダメ。

textarea#body {
  font-family: monospace;
}

∵ iframeで表示させるHTMLの要素には、元(親)ページのCSSでは反映できない。

iframe内でスタイルシートを参照させる必要がある。調べた範囲ではjQueryを使いJavaScriptでiframeが読み込まれたときにCSSを適用させる方法が見つかった。

実験1

#115 の処置で、jQueryをはてなブログで読み込むようにしていたので、本チケットの実験はページのフッターにJavaScriptを追記する。

<script>
    $("iframe").on("load", function() {
        $("iframe").contents().find('textarea#body').css("font-faimily", "MyricaM M");
    });
</script>
結果:NG

設定したJavaScriptが動いているかの確認ができていない。

高橋 徹 さんがほぼ4年前に更新

高橋 徹 さんが3年以上前に更新

  • ステータス進行中 から 終了 に変更
  • 進捗率50 から 100 に変更

実現方法が見出せなかったのでお蔵入り(終了)

他の形式にエクスポート: Atom PDF