显然,HTML元素的ID被加载到HTML页面上的Javascript的全局命名空间中。因此,如果我有HTML:
<p id="mypara">Hello</p>
我可以像以下一样运行Javascript:
mypara.innerText += " world";
导致段落中的“Hello world”作为IE9中的文本和Windows上的Chrome。这似乎是比标准
更方便的引用HTML元素的方法document.getElementById("mypara").innerText += " world";
据我所知,缺点似乎是你不能给出Javascript关键字的HTML元素ID(看起来不那么糟糕),而且你的全局命名空间污染更严重。
这种方法还有其他问题吗?是否有任何文档可以准确描述浏览器何时/如何完成全局命名空间的填充?有怪癖或陷阱吗?有人做过任何浏览器兼容性测试吗?
答案 0 :(得分:1)
早期的IE介绍了制作元素ID的实践,并命名了对元素的全局引用。它从未标准化,被认为是一个非常糟糕的主意。
其他浏览器提供了各种级别的支持,以便与为IE编写的站点兼容,但通常支持很少(甚至在某种程度上隐藏)以阻止其使用。有些浏览器仅在怪异模式或某些DOCTYPE中支持它。
它仍然被认为是一个非常糟糕的主意,不要使用它。使用适当的DOM方法,不要依赖这样的浏览器怪癖。
答案 1 :(得分:0)
我担心脚本在旧浏览器中运行。例如,这个小提琴在Firefox 3中不起作用。