Apakah mungkin menggunakan koordinat yang diberikan untuk mensimulasikan klik di JavaScript di dalam halaman web?
Apakah mungkin menggunakan koordinat yang diberikan untuk mensimulasikan klik di JavaScript di dalam halaman web?
Jawaban:
Anda dapat mengirimkan klik peristiwa , meskipun ini tidak sama dengan klik sebenarnya. Misalnya, ini tidak dapat digunakan untuk mengelabui dokumen iframe lintas domain agar mengira telah diklik.
Semua browser modern mendukung document.elementFromPoint
dan HTMLElement.prototype.click()
, setidaknya sejak IE 6, Firefox 5, versi Chrome apa pun dan mungkin versi Safari apa pun yang mungkin Anda pedulikan. Ia bahkan akan mengikuti tautan dan mengirimkan formulir:
document.elementFromPoint(x, y).click();
https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
Ya, Anda dapat mensimulasikan klik mouse dengan membuat acara dan mengirimkannya:
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);
}
Berhati-hatilah dalam menggunakan click
metode pada elemen - metode ini diterapkan secara luas tetapi tidak standar dan akan gagal di misalnya PhantomJS. Saya berasumsi bahwa implementasi jQuery .click()
melakukan hal yang benar tetapi belum dikonfirmasi.
$.click()
initMouseEvent
sudah tidak digunakan lagi: developer.mozilla.org/en-US/docs/Web/API/MouseEvent/…
initMouseEvent
Anda dapat menggunakan var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )
Ini juga ditampilkan di stackoverflow.com/a/36144688/384670 .
Ini hanyalah jawaban torazaburo , diperbarui untuk menggunakan objek 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);
}
itu tidak berfungsi untuk saya tetapi mencetak elemen yang benar ke konsol
ini kodenya:
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);
Untuk alasan keamanan, Anda tidak dapat memindahkan penunjuk mouse dengan javascript, atau menyimulasikan klik dengannya.
Apa yang ingin Anda capai?
createEvent()
+initMouseEvent()