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