nim*_*imo 3 html javascript dom
有人可以向我解释一下HTML getElementById()方法的内部实现吗?是遍历整个DOM树来查找指定的元素还是它足够智能以便先查找附近的元素?
谢谢
它取决于浏览器,但最有可能使用id-> element的哈希映射.确实存在许多具有重复ID的无效页面.但是,浏览器仍然只返回一个元素,而不是一个集合.
我不知道你所说的"靠近元素"是什么意思,因为这个方法只存在于document.
如果您有兴趣,可以找到Firefox和Chrome等免费软件浏览器的实现.
实现完全(呃)依赖于实现.有些浏览器可以使用HashMap或类似的,或者他们可能不会(因为尽管id被要求是唯一的,有很多不良的编写网页,在那里,提供重复无效标记idS).Internet Explorer 6和7甚至不限制getElementById于id价值观,他们混为一谈命名空间可怕,虽然微软已经清楚地看到了曙光和IE8和IE9都提高一点.
对于实现开源的浏览器,您当然可以找到它们.这里是WebKit源代码的链接,这里是Mozilla 的一个链接(这个行号可能会有所不同,如果你没有在它上面,只需要搜索GetElementById和GetElementByIdInternal).这两个都来自StackOverflow上的相关答案.(事实上,考虑到这个问题,我认为这个问题可能是重复的,尽管Matthew在下面的评论中指出,事情发展得足够快,以至于可能有理由更新......)
| 归档时间: |
|
| 查看次数: |
2362 次 |
| 最近记录: |