Я использую document.elementFromPoint
в проекте, и это кажется очень медленным. 100 000 итераций составляет 7051 мс. 100 000 итераций document.getElementsByTagName("*")
занимают только 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
которые являются вершинами между нами.
Подробнее здесь: https://drafts.csswg.org/cssom/#documentlayout-elementfrompoint
document.getElementsByTagName("*")
только цикл на тег html (html - head - body - div - ul - li - dt - span - input
...) намного быстрее, чем elementFromPoint. С уважением