HTML 元素 ID 的全局变量访问
出现了有关通过全局变量访问 HTML 元素 ID 的适当处理的问题。在给定的示例中,Chrome 允许通过 a.stuff() 直接访问 ID 为“a”的元素,而 Firefox 则需要使用 document.getElementById('a')。
规范
HTML4 规范没有明确概述此行为。然而,它也不禁止将元素 ID 放入全局变量的做法。 WHATWG HTML 规范目前强制执行此行为,将元素 ID 的全局访问视为遗留问题或兼容性问题。
实现
主要浏览器,包括 Chrome 和 Firefox(在怪异模式),出于兼容性原因采用了此行为。然而,Firefox 也允许在严格模式下通过全局变量直接访问元素,但其实现可能不可靠。
歧义
当全局变量 a 和存在 ID 为“a”的 HTML 元素,其行为取决于执行上下文。在大多数情况下,JavaScript 会将全局变量 a 优先于 HTML 元素。然而,由于潜在的冲突和命名空间污染,使用全局变量作为元素 ID 通常是不受欢迎的。
HTML ID 中的特殊字符
HTML ID 可以包含连字符 (- )、冒号 (:) 和句点 (.),这些字符不能在 JavaScript 标识符中使用。为了通过全局变量访问这些元素,浏览器会翻译它们。例如,ID为“foo-bar”的元素可以通过全局变量foo-bar访问。
结论
虽然将元素ID设为全局的做法变量具有历史支持,但 HTML4 规范中没有明确指定。 WHATWG HTML 规范要求这种行为,但建议使用 document.getElementById() 或其他方法来访问元素。由于与全局命名空间中的其他变量发生混淆和潜在冲突,应避免对元素 ID 使用全局变量。
以上是为什么有时可以在 JavaScript 中直接访问 HTML 元素 ID 作为全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!