如何在仅传递 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/