Có thể sử dụng các tọa độ đã cho để mô phỏng một nhấp chuột trong JavaScript trong một trang web không?
Có thể sử dụng các tọa độ đã cho để mô phỏng một nhấp chuột trong JavaScript trong một trang web không?
Câu trả lời:
Bạn có thể gửi một sự kiện nhấp chuột , mặc dù điều này không giống như một nhấp chuột thực. Ví dụ: nó không thể được sử dụng để lừa tài liệu iframe tên miền chéo nghĩ rằng nó đã được nhấp.
Tất cả các trình duyệt hiện đại đều hỗ trợ document.elementFromPoint
và HTMLElement.prototype.click()
ít nhất là IE 6, Firefox 5, bất kỳ phiên bản nào của Chrome và có thể là bất kỳ phiên bản Safari nào mà bạn có thể quan tâm. Nó thậm chí sẽ đi theo các liên kết và gửi biểu mẫu:
document.elementFromPoint(x, y).click();
https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
Có, bạn có thể mô phỏng một cú nhấp chuột bằng cách tạo một sự kiện và điều động nó:
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);
}
Hãy cẩn thận khi sử dụng click
phương pháp trên một phần tử - nó được triển khai rộng rãi nhưng không chuẩn và sẽ thất bại trong ví dụ như PhantomJS. Tôi giả sử việc triển khai của jQuery .click()
làm đúng nhưng chưa xác nhận.
$.click()
initMouseEvent
đã không được dùng nữa: developer.mozilla.org/en-US/docs/Web/API/MouseEvent/…
initMouseEvent
bạn có thể sử dụng var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )
Điều này cũng được hiển thị trong stackoverflow.com/a/36144688/384670 .
Đây chỉ là câu trả lời của torazaburo , được cập nhật để sử dụng đối tượng 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);
}
nó không hoạt động cho tôi nhưng nó in phần tử chính xác vào bảng điều khiển
đây là mã:
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);
Vì lý do bảo mật, bạn không thể di chuyển con trỏ chuột bằng javascript hoặc mô phỏng một cú nhấp chuột với nó.
Bạn đang cố gắng hoàn thành điều gì?
createEvent()
+initMouseEvent()