无论如何,这种方法似乎没有足够的文档记录,实际上,我遇到的消息来源甚至都没有提及它。[…]
除了依赖隐式声明的全局变量外,缺少文档是不使用它的重要原因。
显然,将id
值提升为全局变量并不符合标准ID属性的HTML5规范未提及,因此,您不应假定将来的浏览器会实现它。
编辑:原来,这种行为 是 符合标准-在HTML5中,
window应该支持“命名元素”访问属性:
为了上述算法的目的,具有名称name的已命名对象是:* 活动文档的名字是孩子浏览上下文 的名字 ,* 具有名称内容属性(其值为 name)的 对象,小程序,区域,嵌入,表单,框架集,img或对象元素,或者* 具有 id 内容属性,其值为 name的 HTML元素。
来源:HTML5规范,“对窗口对象的命名访问”, 重点是我的 。
基于此,遵循标准不是避免这种模式的原因。但是,该规范本身建议不要使用它:
通常,依靠它会导致代码变脆。例如,随着新功能添加到Web平台,最终映射到该API的ID会随时间变化。替代使用
document.getElementById()或
document.querySelector()。



