fc2ブログのテンプレートでhtmlのカスタマイズをしています。
それぞれの記事に入る前のトップページに、本文の一部を表示するため、全文を取得する<%topentry_body>変数を使ったあと、javascriptを動作させています。
トップページに表示したい部分には
html
1<div class="summary">抽出したい部分</div>
といったように定義して、
html
1<script> 2document.getElementsByClassName("summary"); 3</script>
こちらのスクリプトをbodyタグが閉じる直前に記述しています。
ここまでのプログラムの動作は
別質問
JavaScript - getelementbyIDでの要素の抜き出しについて|teratail
https://teratail.com/questions/241222
の中でお力添えをいただき、解決に向かいつつあります。しかし、ページによってプログラムが動作する部分とそうでない部分が出てきてしまったため、問題切り分けのために別質問を立てさせていただきました。
(回答してくださった方からも、この件については別質問を…とアドバイスをいただいています)
問題のページ
ブログトップページ
アクセスしていただきますと、記事一覧が表示されると思います。
タイトルの頭に○がついているページは、上述の、本文一部抜き出しのスクリプトがきちんと動作しています。
今回、お伺いしたいのは、タイトルの頭に☓がついているページの件についてです。
大きく分けて2種類あります。
1.別のjavascriptが動作しているページ
記事一覧の中の、
テストページ(ルビ振りjavascript付き)
が該当します。
本記事では、青空文庫という電子書籍形式にならった記述をすると、自動でふりがなを振ってくれるスクリプトが動作しています。
これは、|漢字《ふりがな》という記述を変換してくれるものです。個別ページに入ると【快晴】の部分にカイセイとルビが振られています。
javascript
1$('body').append( 2'<style>body{display:none;}</style>' 3); 4$(function(){ 5 $('body').each(function() { 6 $(this).html( 7 $(this).html() 8 /* 半角または全角の縦棒以降の文字をベーステキスト、括弧内の文字をルビテキストとします。 */ 9 .replace(/[\||](.+?)《(.+?)》/g, '<ruby>$1<rt>$2</rt></ruby>') 10 .replace(/[\||](.+?)((.+?))/g, '<ruby>$1<rt>$2</rt></ruby>') 11 .replace(/[\||](.+?)((.+?))/g, '<ruby>$1<rt>$2</rt></ruby>') 12 /* 漢字の連続の後に括弧が存在した場合、一連の漢字をベーステキスト、括弧内の文字をルビテキストとします。 */ 13 .replace(/([一-龠]+)《(.+?)》/g, '<ruby>$1<rt>$2</rt></ruby>') 14 /* ただし丸括弧内の文字はひらがなかカタカナのみを指定できます。 */ 15 .replace(/([一-龠]+)(([ぁ-んァ-ヶ]+?))/g, '<ruby>$1<rt>$2</rt></ruby>') 16 .replace(/([一-龠]+)(([ぁ-んァ-ヶ]+?))/g, '<ruby>$1<rt>$2</rt></ruby>') 17 /* 括弧を括弧のまま表示したい場合は、括弧の直前に縦棒を入力します。 */ 18 .replace(/[\||]《(.+?)》/g, '《$1》') 19 .replace(/[\||]((.+?))/g, '($1)') 20 .replace(/[\||]((.+?))/g, '($1)') 21 ); 22 }); 23 24$('body').fadeIn(3000)});
上記のjavascriptを記述したファイルをDropboxに置き、外部リンクを貼っています。
このスクリプトが入っているページは、テキストの抽出がうまくいっていないようで、summaryでクラス定義した部分以降も、トップページに表示されてしまっています。
javascript同士、競合していたりするのでしょうか?
2.CSSをスタイルタグで直接記述しているページ
記事一覧の前半3つ(複雑なCSS、インラインに記述、スタイルタグで記述)が該当します。
あるひとつのページだけでCSSを使いたい場合が多くあり、しばしば記事内にCSSを直書きすることがあります。
よく使っているCSSの一例(htmlに直書きしています)
上記のjsfiddleリンクにある、リストボックスや見出し関係のCSSを使うことが多いのですが、この場合も、本文抜き出しスクリプトが動作しません…!
とても長くなってしまいましたが、上記2パターンのエラーに付きまして、どのようなプログラム修正を行えばよいか、お力添えをいただけますでしょうか。
どうぞよろしくお願いいたします。
追記:
document.getElementsByClassName("summary"); たけでは、なにも動作しない筈なので、コード間違いがあるのでは…?とヒントをいただきました。しかし、こちらのコードを<script>で挟んだだけで、少なくとも、ただ本文を打っただけのページではsummaryクラスによる抜き出しが動作している部分があるのです…。テンプレート変数の方に秘密があるのでしょうか。
2020/02/16 追記
CSSが別ページに及んでしまう件については、クラス定義をすることで回避いたしましたので、質問タイトルをjavascriptのみに絞りました。
また、取得だけの動作をしていたjavascriptについては、一旦削除をいたしました。
この状態でも、正しく動作しているように見える部分があるのは、たまたま表示したい部分と【表示可能字数】がうまく合致しているだけなのかもしれません…!
回答1件
あなたの回答
tips
プレビュー