記事一覧はページ下部の「Bloggerの記事に目次をJavaScriptで自動的に付与するシリーズ」よりどうぞ。
この「Bloggerの記事に目次をJavaScriptで自動的に付与する」の一つのコンセプトとして、
- 個別の記事に目次を設定しなくても、自動的にすべての記事に目次を付与できる。
そこでページが開かれたときに自動的に JavaScript を実行する方法を検討しました。
結論からすると、最も簡単にページが開かれたときに JavaScript を実行する方法として、<head>要素内に直接 JavaScript を記載する方法があります。
ソースコード(test.html) :
<html>
<head>
<title>test page</title>
<script type="text/javascript">
<!--
alert("page open!");
//-->
</script>
</head>
<body>
<h1>TEST.</h1>
</body>
</html>
実行結果:
ページを開いたときに実行される
この方法なら<head>内に目次生成用の JavaScript を記載するだけなので、面倒な設定や他の JavaScript との相互作用を考慮しなくてよさそうですね。
と思って処理を記載していたところ、<head>内で JavaScript を実行してしまうと、まだ<body>以下の内容が読み込まれていないために、<body>中に記載されている要素を取得できませんでした。
そこで、処理対象の<body>内の要素の下に JavaScript を記載して実行することにしました。
検証:
<head>内で実行した場合
ソースコード
<html>
<head>
<title>test page</title>
<script type="text/javascript">
<!--
// ページ読み込み時に目次の生成・挿入処理を実行
generateIndex();
// 目次の生成・挿入処理
function generateIndex() {
// 投稿本文が格納されている div 要素を発見し、目次を挿入する
var divs = document.getElementsByTagName("div");
alert(divs.length);
}
//-->
</script>
</head>
<body>
<h1>TEST.</h1>
<div id="post-body-1234">
記事本文です。
</div>
</body>
</html>
結果
<head>内に JavaScript を記載し、<head>内で実行した場合、まだ<body>が読み込まれていないため、この時点で実行した JavaScript では <div>の要素数が 0 として取得されてしまいます。(<body>には<div>が 1 つ記載されているにも関わらず。)
取得できた <div> 要素数:0
次に、<div>要素の後に JavaScript を記載した場合はどうなるのでしょうか。
実際に見てみましょう。
<body>内の処理対象の要素の直後で実行した場合
ソースコード
<html>
<head>
<title>test page</title>
</head>
<body>
<h1>TEST.</h1>
<div id="post-body-1234">
記事本文です。
</div>
<script type="text/javascript">
<!--
// ページ読み込み時に目次の生成・挿入処理を実行
generateIndex();
// 目次の生成・挿入処理
function generateIndex() {
// 投稿本文が格納されている div 要素を発見し、目次を挿入する
var divs = document.getElementsByTagName("div");
alert(divs.length);
}
//-->
</script>
</body>
</html>
結果
<div>要素の下に JavaScript が記載されているため、JavaScript 実行時には <div>要素の数が正しく 1 と取得できています。
取得できた <div> 要素数:1
以上より、このBloggerの記事に目次をJavaScriptで自動的に付与する JavaScript も記事の <div>要素の後に記載する必要があります。
次は、記事のページにのみ目次を付与する方法を検討します。
参考文献
「Bloggerの記事に目次をJavaScriptで自動的に付与する」シリーズ
- そうだ!Bloggerの記事に目次を付けよう!
- 記事の要素の調査 - 準備編(1) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- ページを開いたときに自動的に目次を付与する - 準備編(2) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- 記事のページにのみ目次を付与する - 準備編(3) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- とりあえず目次というテキストを挿入してみる(テスト環境) - 実践編(1) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- とりあえず目次というテキストを挿入してみる(実際の環境) - 実践編(2) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- とりあえず見出しを列挙してみる(テスト環境) - 実践編(3) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- とりあえず見出しを列挙してみる(実際の環境) - 実践編(4) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- 見出しにアンカーを付与し、目次から見出しへジャンプできるようにする(テスト環境) - 実践編(5) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- 見出しにアンカーを付与し、目次から見出しへジャンプできるようにする(実際の環境) - 実践編(6) - Bloggerの記事に目次をJavaScriptで自動的に付与する
- シリーズ完結 - 最適化済みサンプル配布 - Bloggerの記事に目次をJavaScriptで自動的に付与する
コメントを投稿 (ここをクリックしてコメント投稿フォームを表示)
コメント投稿機能について