是否可以使用给定的坐标来模拟网页中 JavaScript 的点击?
如何使用 JavaScript 中的 x,y 坐标模拟点击?
IT技术
javascript
jquery
html
mouseevent
mouseclick-event
2021-02-01 17:13:03
5个回答
您可以调度click事件,但这与真正的点击不同。例如,它不能用于诱使跨域 iframe 文档认为它已被点击。
所有现代浏览器都支持document.elementFromPoint
和HTMLElement.prototype.click()
,因为至少 IE 6、Firefox 5、任何版本的 Chrome 以及您可能关心的任何版本的 Safari。它甚至会跟随链接并提交表格:
document.elementFromPoint(x, y).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()
正确的,但尚未确认。
这只是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);
出于安全原因,您不能用 javascript 移动鼠标指针,也不能用它模拟点击。
你想要完成什么?
其它你可能感兴趣的问题