Blogger Labo:見出しにidをつけてもアンカーリンクが使えないバグの対処法

「Smart」「Hello, world!」のテンプレートで、アンカーリンク(ページ内リンク)を使用した場合、うまく機能しないバグの発生を確認したので、その対処法を説明したいと思います。


問題点


例えば、いずれかの見出しに「<h3 id="id名">見出し</h3>」のようにidを設定して、そこに繋がるリンクを「<a href="#id名">リンク</a>」のように設定すると、Bloggerの仕様であれば、リンクを押したらそのidをつけた見出しに飛ぶようになります。

しかし、「Smart」「Hello, world!」のテンプレート使用中にそれがうまく機能しない事例が発生しました。原因は今のところ不明ですが、対処法を発見したので、以下に書き残しておきたいと思います。

対処法


NG例

<h3 id="id名">見出し</h3>

<a href="#id名">リンク</a>

このidの設定方法では、どんなにリンクをいじっても直りません。

OK例

<h3><span id="id名"></span>見出し</h3>

<a href="#id名">リンク</a>

この方法は、あえて「hタグ(見出しタグ)」の中に「spanタグ」を入れ込んで、そこにidを設定することでエラーを迂回しています。

原因について


目次機能なしのサンプルページでテストした結果、アンカーリンクを問題なく使えたため、おそらく「自動目次機能」と干渉してしまっているのが問題だと思われます。そのため、「自動目次機能」を使用している場合は、こういうエラーが出てしまうかも知れません。

その際は、上記の方法で回避してみてください。