Это очень хороший вопрос, предположим, что функция, которую мы ищем, выглядит примерно так:
document.elementFromPoint = function(x,y) { return element; };
Эта скрытая функция фактически реализована в Firefox 3.0 с использованием механизма компоновки gecko.
https://developer.mozilla.org/en/DOM/document.elementFromPoint
Хотя это нигде не работает. Вы можете создать эту функцию самостоятельно, хотя:
document.elementFromPoint = function(x,y) {
// Scan through every single HTML element
var allElements = document.getElementsByTagName("*");
for( var i = 0, l = allElements.length; i < l; i++ ) {
// If the element contains the coordinate then we found an element:
if( getShape(allElements[i]).containsCoord(x,y) ) {
return allElements[i];
}
}
return document.body;
};
Это было бы очень медленно, однако, это могло бы сработать! Если вы искали что-то подобное, чтобы ускорить ваш HTML-код, тогда найдите что-то другое ...
По сути, он просматривает каждый отдельный HTML-элемент в документе и пытается найти тот, который содержит координату. Мы можем получить форму HTML-элемента, используя element.offsetTop и element.offsetWidth.
Я мог бы когда-нибудь использовать что-то подобное. Это может быть полезно, если вы хотите сделать что-то универсальное для всего документа. Как система всплывающих подсказок, которая работает где угодно, или система, которая запускает контекстные меню при любом щелчке левой кнопкой мыши. Было бы предпочтительнее найти какой-либо способ кэширования результатов getShape для элемента HTML ...