DOM initMouseEvent clientX, clientY - PullRequest
       7

DOM initMouseEvent clientX, clientY

2 голосов
/ 25 февраля 2009

как имитировать событие onclick на DIV, передающем только координаты X, Y ???

Если я попытаюсь сделать это, очевидно, функция dispatchEvent захочет объект, на котором будет происходить событие ... но тогда в чем смысл прохождения в событии создание координат ????

Спасибо

1 Ответ

8 голосов
/ 25 февраля 2009

Параметры clientX и clientY - это позиция относительно элемента, обрабатывающего событие , поэтому вам необходимо знать, к какому элементу относится событие click.

Если вы хотите смоделировать щелчок по неизвестному элементу на основе координат окна, вам нужно будет найти элемент в этой позиции. В 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 будет рассчитывать координаты щелчка относительно элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...