2009-02-25 67 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