今まで気にかけていなかった、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 件のコメント:
コメントを投稿