เป็นไปได้หรือไม่ที่จะใช้พิกัดที่กำหนดเพื่อจำลองการคลิกใน 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
นี่เป็นเพียงคำตอบของ torazaburoซึ่งอัปเดตเพื่อใช้วัตถุ 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);
ด้วยเหตุผลด้านความปลอดภัยคุณไม่สามารถเลื่อนตัวชี้เมาส์ด้วยจาวาสคริปต์หรือจำลองการคลิกด้วยจาวาสคริปต์ได้
อะไรคือสิ่งที่คุณพยายามทำให้สำเร็จ?
createEvent()
+initMouseEvent()