ページの途中に飛べるリンクを張る

name属性を用いた終点アンカー

名前識別子

ページの途中へリンクを張る方法としては、名前識別子(name属性)を用いる方法がよく知られています。

<h2><a name="subhead">副見出し</a></h2>

このようにa要素で終点アンカーを設置しておいて、<a href="#subhead">のようにアクセスする方法です。

name属性の問題点

はっきり言って一つ一つをa要素で括っていく作業は、かなり面倒臭いです。 自分で使うならいざ知らず、誰から参照されるともわからない見出しに対してわざわざ終点アンカーを設置する気にはならないでしょう。

また、CSSで始点アンカーにスタイルを指定したつもりでも、勝手に終点アンカーの方にまでスタイルが及んでしまう場合もあります。これは:link擬似要素を使わないのが悪いですが、そもそもa要素を終点アンカーに使う事自体が間違っているような気がします。

name属性を使う時の注意点

<a name="subhead"><h2>副見出し</h2></a>

このような使い方をよく見かけますが、望ましくありません。 a要素はインライン要素ですから、ブロックレベル要素のh2は含めないはずです。

id属性を用いた終点アンカー

部分識別子

ページ内にフラグメントを与えるもう一つの方法として、部分識別子(id属性)を用いるという手段があります。

<h2 id="subhead">副見出し</h2>

このように、id属性を見出し与えるだけで簡単に終点アンカーを設置できます。 大した違いでも無いように見えますが、実際いちいちaタグで括るのに比べてかなり手間が削減できます。 DOMで自動的にIDを割り振ってみると、a要素を生成するのはかなりの手間が掛かる事がわかります。

id属性の問題点

Netscape4.7x以前で“ジャンプ”しないという欠点があります。 同ブラウザはHTML4適合ではないので、仕方がないかもしれません。

文書型による制限

XHTML 1.1 及び XHTML Basicに名前識別子モジュールが選択されていないため、name属性は使用できません。 XHTML 1.0では、後方互換性のためname属性とid属性の双方を併設するように推奨されています。

HTML 3.2にid属性はありません。

XLink

XLink

しかしこのままでは相変わらず作者側でフラグメントを設置していない限り、ページ内の任意の箇所にアクセスする事は出来ません。 そこで検討されているのがXLinkという新しい規格です。ただし、XLinkに対応しているブラウザは現在ありません。

一説では、XLinkは微妙だという話。まあBehavior Attributesは確かにどうしようもない代物ですけれど。