【发布时间】:2018-11-05 15:15:23
【问题描述】:
IE11 是否使用哈希表来优化对document.getElementById() 的调用,或者如果没有,使用什么样的优化?我的逻辑是document.getElementById() 会被相当频繁地调用,并且对 DOM 树的完全遍历效率低下,因此对其进行优化是有意义的。
我询问的是特定浏览器和特定方法,以便我的问题得到解答。
【问题讨论】:
-
我希望是这样,但我不知道去哪里看看它是否属实。通常,浏览器总是优化通过 ID 获取项目。事实上,甚至将 ID 附加到
window对象是 Microsoft 的想法。这意味着如果您有一个 ID 为myElement的元素,您会找到一个带有所述元素的window.myElement条目。这后来被制定为标准。这来自 IE 的早期,它显示了优化访问的努力。我真诚地怀疑他们现在使用 IE11 进行全面扫描。 -
是的,我想我们必须希望微软工程师偶然发现这个问题:)
-
您可以生成两个具有不同DIV数量的不同页面。测量在两个页面上按 id 获取其中一个 DIV 所需的时间。如果在后台使用哈希表,则时间不应取决于 DIV 的数量。
-
这里是 IE/Edge MVP。我会把它传递给团队,看看是否有人有任何见解!
-
如果没有来自 Microsft 的评论,我不确定我们是否会知道这是如何发生的,但您可能想查看How does document.getElementById() search the DOM tree?,因为那里的答案涉及到一些细节。
标签: javascript internet-explorer-11 getelementbyid