javascript - DOM initMouseEvent clientX, clientY

标签 javascript events dom

如何在仅传递 X、Y 坐标的 DIV 上模拟 onclick 事件???

如果我尝试做到这一点,显然 dispatchEvent 函数需要 将在其上引发事件的对象......但那是什么意思 传递事件创建坐标????

谢谢

最佳答案

clientX 和 clientY 参数是相对于处理事件的元素的位置,所以你需要知道点击事件是针对哪个元素的。

如果要根据窗口坐标模拟对未知元素的点击,则需要在该位置找到该元素。在 IE 和 Firefox 3 中,您可以使用 document.elementFromPoint(x, y)。我不知道在其他浏览器中有什么办法,除了遍历页面中的元素,查看它们的位置/大小以确定坐标处的内容。

你的代码看起来像这样:

function simulateClick(x, y) {
    var el = getElementFromPoint(x, y);

    var evt = document.createEvent("MouseEvents");
    evt.initMouseEvent("click", true, true, window,
        1, 0, 0,
        calculateClientX(el, x), calculateClientY(el, y),
        false, false, false, false, 0, null);

    el.dispatchEvent(evt);
}

getElementFromPoint 将使用 document.elementFromPoint 或遍历所有元素。 calculateClientX/Y 将计算相对于元素的点击坐标。

关于javascript - DOM initMouseEvent clientX, clientY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586137/

相关文章:

javascript - 以跨浏览器兼容的方式触发 onresize

javascript - 如何知道光标何时停在某处?

javascript - 如何使用 IE 捕获 STYLE 标签上的 "load"事件?

Javascript 设置 window.name - IE 中的问题

javascript - react 计算器 : check if any value exists in string

flash - Flash 中的 onMouseUp/Down 和 onPress/Release 事件有什么区别?

javascript - DOM 调用对象

javascript - 如何使用 document.getElementByID 附加 <br>?

javascript - 将标题标签应用于 iFrame 中的框架

javascript - 过滤器不是创建一个新数组吗?