Можно ли использовать заданные координаты для имитации щелчка в JavaScript на веб-странице?
javascript
jquery
html
mouseevent
mouseclick-event
RadiantHex
источник
источник
Ответы:
Вы можете отправить событие щелчка , хотя это не то же самое, что настоящий щелчок. Например, его нельзя использовать, чтобы обмануть междоменный документ 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()