我在一个项目中使用 document.elementFromPoint
,它看起来很慢。 100,000 次迭代需要 7051 毫秒。 document.getElementsByTagName("*")
的 100,000 次迭代只需要 32 毫秒。为什么 document.elementFromPoint
慢了 200 多倍?有没有更快的替代方案?
function elementFromPointSpeed() {
start=performance.now();
for(var i=0;i<100000;i++)
el=document.elementFromPoint(100,100);
//el=document.getElementsByTagName("*");
end=performance.now()
console.log(end-start)
}
elementFromPointSpeed();
最佳答案
DOM的作用 elementFromPoint 给定的2个点得到topmos需要循环所有DOM标签内同一个元素的多个点,最后找到点周围的元素x,y
我们之间的topmos。
更多信息在这里:https://drafts.csswg.org/cssom/#documentlayout-elementfrompoint
document.getElementsByTagName("*")
只在标签html上循环(html - head - body - div - ul - li - dt - span - input
...)
比 elementFromPoint 快得多。
问候
关于javascript - document.elementFromPoint 速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46045706/