2011年1月15日土曜日

document.anchors と document.links

今まで気にかけていなかった、DOMの"document.anchors"と"document.links"の違いを整理。

  • name属性を持つa要素はアンカーとみなされるので、document.anchors に属する。
  • href属性を持つa要素はリンクとみなされるので、document.links に属する。
  • name属性とhref属性を両方とも持っているa要素は、document.links, document.anchors の両方に属する。
  • id属性の有無はアンカー/リンクの判別には無関係(IEでは仕様が異なり、id属性を持つ場合はアンカーとみなされる)

確認のための例

アラートでa要素のテキストノードを表示。a1とa3が document.anchors、a2とa3が document.links として表示される。

<html>
<head>
  <title>test</title>
</head>
<body>

<ul>
  <li><a name="a1">a1</a></li> <!-- anchor -->
  <li><a href="foo">a2</a></li> <!-- link -->
  <li><a name="a3" href="bar">a3</a></li> <!-- anchor, link -->
</ul>

<script type="text/javascript">
  function collectText(a){
    var stack = new Array();
    for(var i=0, n=a.length; i<n; i++){
      stack.push(a[i].childNodes[0].nodeValue);
    }
    return stack.join(', ');
  }
  alert('document.anchors[' + collectText(document.anchors) + ']');
  alert('document.links[' + collectText(document.links) + ']');
</script>

</body>
</html>

※IE-6, IE-7, IE-8, Firefox-3.6.13, Chrome-8.0.552.224, Safari-5.0.2で期待通りに動いた(Windows7)。

0 件のコメント:

コメントを投稿