如何在JavaScript中使用x,y坐标模拟点击?

是否可以使用给定的坐标来模拟网页中JavaScript中的单击?


答案 1

您可以调度点击事件,但这与实际点击不同。例如,它不能用于诱骗跨域iframe文档,使其以为它被点击了。

所有现代浏览器都支持,并且至少从IE 6,Firefox 5开始,任何版本的Chrome以及您可能关心的任何版本的Safari。它甚至可以跟踪链接并提交表单:document.elementFromPointHTMLElement.prototype.click()

document.elementFromPoint(x, y).click();

答案 2

是的,您可以通过创建事件并调度它来模拟鼠标单击:

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);
}

当心在元素上使用该方法 - 它被广泛实现但不是标准的,并且在例如PhantomJS中会失败。我假设jQuery的实现做了正确的事情,但尚未得到证实。click.click()