Ist es möglich, vorgegebene Koordinaten zu verwenden, um einen Klick in JavaScript innerhalb einer Webseite zu simulieren?
Ist es möglich, vorgegebene Koordinaten zu verwenden, um einen Klick in JavaScript innerhalb einer Webseite zu simulieren?
Antworten:
Sie können ein Klickereignis auslösen, obwohl dies nicht mit einem echten Klick identisch ist. Zum Beispiel kann es nicht verwendet werden, um ein domänenübergreifendes iframe-Dokument zu täuschen, dass es angeklickt wurde.
Alle modernen Browser unterstützen document.elementFromPoint
und HTMLElement.prototype.click()
, da mindestens IE 6, Firefox 5, jede Version von Chrome und wahrscheinlich jede Version von Safari, die Sie wahrscheinlich interessieren. Es wird sogar Links folgen und Formulare einreichen:
document.elementFromPoint(x, y).click();
https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
Ja, Sie können einen Mausklick simulieren, indem Sie ein Ereignis erstellen und auslösen:
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);
}
Achten Sie darauf, dass Sie die click
Methode nicht für ein Element verwenden - sie ist weit verbreitet, aber nicht Standard und schlägt beispielsweise in PhantomJS fehl. Ich gehe davon aus, dass die Implementierung von jQuery .click()
das Richtige tut, habe dies jedoch nicht bestätigt.
$.click()
initMouseEvent
wurde veraltet: developer.mozilla.org/en-US/docs/Web/API/MouseEvent/…
initMouseEvent
Sie dies verwenden. var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )
Dies wird auch in stackoverflow.com/a/36144688/384670 angezeigt .
Dies ist nur die Antwort von torazaburo , die aktualisiert wurde, um ein MouseEvent-Objekt zu verwenden.
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);
}
Es funktioniert nicht für mich, aber es druckt das richtige Element auf die Konsole
Das ist der Code:
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);
Aus Sicherheitsgründen können Sie den Mauszeiger weder mit Javascript bewegen noch einen Klick damit simulieren.
Was versuchen Sie zu erreichen?
createEvent()
+initMouseEvent()