ガラケーのキャリア毎のアンカータグの挙動について実験

これは何?


ガラケーのキャリア毎のアンカータグの挙動が知りたかったので実験した結果です

知りたいこと

  • 終点アンカーは、name, id どちらで有るべきか?
  • 終点アンカーを持つタグは、Aタグ以外でもよいのか?

先に結論


全キャリアで正しく動作させるには、終点アンカーは、A タグで、name でアンカー名を指定する

  • 但し、W3CのXHTML1.1 違反なので、id も指定したほうが無難


具体的にはこんな感じ

<a href="#test">START</a>
<a id="test" name="test">GOAL</a>

免責事項


それぞれ、1機種のみでの確認の為、他機種だと別の挙動をするかも


実験内容


以下のXHTML(XHTML 1.1)にて、いろんな条件のアンカータグを書いて、挙動を調査

条件
  1. 目的地アンカー(終点アンカー)が A タグで、name と id 両方で指定
  2. 目的地アンカー(終点アンカー)が A タグで、name で指定
  3. 目的地アンカー(終点アンカー)が A タグで、id で指定
  4. 目的地アンカー(終点アンカー)が div タグで、name と id 両方で指定
  5. 目的地アンカー(終点アンカー)が div タグで、name で指定
  6. 目的地アンカー(終点アンカー)が div タグで、id で指定

結果

ausoftbank
  • 5. 以外正しく動作
docomo
  • 1. 2. のみ正しく動作

仕様を見てみた

softbank
  • 終了アンカーは、a タグに name 属性を付けて対応するように書かれている
[ページ内ラベルを指定する場合] 「<a name=#label>~</a>」で指定した位置へ遷移するには、同一ページ(ファイル)内であるならば、「<a href=#label>」と定義したアンカーを用い、別ページ(ファイル)の場合には、「<a href=(当該ファイルへの URI)#label>」 と定義したアンカーを用いる。
docomo


a タグの name属性の解説の例文では、終了アンカーは、a タグの name 属性
仕様書では、a タグ以外に name 属性が無い

name
値

《char》
意味

    アンカーに名前をつけます。

注意点

<A name="top">ページトップ</A>
<A href="#top">ページのトップへ</A>
au


説明文を読む限りでは、終了アンカーは、任意の要素に、id or name 属性で定義する

  • 実際に動かすと、div の name 属性では動作しない
アンカーとは、ある文章の一部からある文章 (またはその一部) へとリンクが設定されている場合の、その出発地点と到達地点のことで、a要素を利用することで、その両方を指定する事ができます。
a要素をリンクの出発地点とする場合は、href属性でリンク先のURLを指定します。文章の特定の部分を到達地点とした場合は、name属性またはid属性を使用して、そこに名前 (識別子) を付けておきます。この場合、リンク先のhref属性で「URL#名前」と指定する事で、その文書内のその位置にリンクさせる事ができます。

KDDI au: 主要タグの説明 > リンク関連/マルチメディア関連/フォーム・データ入力関連

w3c (XHTML1.1)


XHTML1.1 より、a タグから name 属性が無くなった

On the a and map elements, the name attribute has been removed in favor of the id attribute 

XHTML 1.1 - Changes from XHTML 1.0 Strict

まとめ


全キャリアで正しく動作させるには、終点アンカーは、A タグで、name でアンカー名を指定する

  • 但し、W3CのXHTML1.1 違反なので、id も指定したほうが無難


W3C的には、終点アンカーに、Aタグ以外を使って良いのかは分からなかった
まぁ、実務的には上記の方法でやれば問題ないはず


そんなかんじ