我之前在这个 SO中提到过关于 IE6/7(和某些版本的 Opera)的有趣行为,它document.getElementById
可以找到一个元素,其name
属性已定义但属性未定义id
,这样
function f() {
document.getElementById("a1").value = ...;
}
...
<input name="a1" ...></input>
实际上适用于这些版本。
通过网络搜索,我发现了 Chris Bloom 的这个错误报告,其中一个名叫 Milo van der Leij 的用户指出了以下内容(正如他在这个 w3c 规范中所提到的):
在他们的辩护中:“id 和 name 属性共享相同的名称空间。”
id 和 name 属性共享同一个命名空间是什么意思?为什么这个条件足以让 IE6/7/Opera 在他们的 JS 引擎中实现这种行为?