2009-02-25 61 views
1

如何模拟只传递X,Y坐标的DIV上的onclick事件???DOM initMouseEvent clientX,clientY

如果我试图做出这一点,显然dispatchEvent函数想要在其上引发该事件的对象 ......但那么传递事件创建时的意义 的坐标是多少?

感谢

回答

8

的clientX和clientY参数是相对于元素处理事件位置,所以你需要知道什么元素click事件将要。

如果要基于窗口坐标模拟对未知元素的点击,则需要在该位置找到元素。在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会计算相对于元素的点击坐标。

+0

很好,它工作得很好。非常感谢你!!!! – xdevel2000 2009-02-26 08:23:50