DOM initMouseEvent clientX, clientY
как можно имитировать событие onclick на DIV, передавая только координаты X, Y ???
Если я попытаюсь сделать это очевидным, функция dispatchEvent хочет объект, на котором будет вызвано событие ... но тогда каков смысл передачи при создании события координат ????
Спасибо
Ответов (1)1
Параметры clientX и clientY - это позиция относительно элемента, обрабатывающего событие , поэтому вам необходимо знать, к какому элементу относится событие щелчка.
Если вы хотите смоделировать щелчок по неизвестному элементу на основе координат окна, вам нужно будет найти элемент в этой позиции. В IE и Firefox 3 вы можете использовать document.elementFromPoint(x, y)
. Я не знаю другого способа в других браузерах, кроме как перебирать элементы на странице, глядя на их положение / размер, чтобы определить, что находится в координатах.
Ваш код будет выглядеть примерно так:
function simulateClick(x, y) {
var el = getElementFromPoint(x, y);
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
1, 0, 0,
calculateClientX(el, x), calculateClientY(el, y),
false, false, false, false, 0, null);
el.dispatchEvent(evt);
}
getElementFromPoint
будет использовать любой document.elementFromPoint
или перебирать все элементы. calculateClientX/Y
вычислит координаты щелчка относительно элемента.