Можно ли использовать заданные координаты для имитации щелчка в JavaScript на веб-странице?
Можно ли использовать заданные координаты для имитации щелчка в JavaScript на веб-странице?
Ответы:
Вы можете отправить событие щелчка , хотя это не то же самое, что настоящий щелчок. Например, его нельзя использовать, чтобы обмануть междоменный документ iframe, заставив думать, что по нему щелкнули.
Все современные браузеры поддерживают document.elementFromPointи HTMLElement.prototype.click(), по крайней мере, IE 6, Firefox 5, любую версию Chrome и, возможно, любую версию Safari, которая может вам понравиться. Он даже будет переходить по ссылкам и отправлять формы:
document.elementFromPoint(x, y).click();
https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
Да, вы можете имитировать щелчок мышью, создав событие и отправив его:
function click(x,y){
var ev = document.createEvent("MouseEvent");
var el = document.elementFromPoint(x,y);
ev.initMouseEvent(
"click",
true /* bubble */, true /* cancelable */,
window, null,
x, y, 0, 0, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
el.dispatchEvent(ev);
}
Остерегайтесь использования clickметода для элемента - он широко реализован, но не является стандартным и не работает, например, в PhantomJS. Я предполагаю, что реализация jQuery .click()работает правильно, но не подтвердила.
$.click()
initMouseEventустарел: developer.mozilla.org/en-US/docs/Web/API/MouseEvent/…
initMouseEventвы можете использовать var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )Это также показано в stackoverflow.com/a/36144688/384670 .
Это просто ответ торазабуро , обновленный для использования объекта MouseEvent.
function click(x, y)
{
var ev = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true,
'screenX': x,
'screenY': y
});
var el = document.elementFromPoint(x, y);
el.dispatchEvent(ev);
}
это работает для меня, но он выводит правильный элемент на консоль
это код:
function click(x, y)
{
var ev = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true,
'screenX': x,
'screenY': y
});
var el = document.elementFromPoint(x, y);
console.log(el); //print element to console
el.dispatchEvent(ev);
}
click(400, 400);
По соображениям безопасности вы не можете перемещать указатель мыши с помощью javascript или имитировать с его помощью щелчок.
Чего вы пытаетесь достичь?
createEvent()+initMouseEvent()