2011-06-25 59 views
3

我有一些代碼使用dispatchEvent來模擬點擊,並且相同的確切代碼在Chrome中正常工作,但在Firefox中不起作用。下面的代碼:Firefox 5 dispatchEvent不工作

var evt = document.createEvent("MouseEvents"); 
evt.initEvent("click",true,true); 
jQuery("a:contains(Next)")[0].dispatchEvent(evt); 

我點擊加載其他頁面和頁面加載罰款在Chrome但Firefox也絕對沒有什麼,當我在Firebug運行此代碼,甚至當我執行它作爲一個書籤的鏈接。我也嘗試了通過設置MDC文檔中顯示的所有選項來初始化事件的長形式,但是它沒有做任何事情。我在這裏做錯了什麼?

回答

3

您的事件看起來是一個鼠標事件,你可能反而嘗試使用鼠標事件,像這樣的例子:

var oEvt = (document.createEvent)? document.createEvent('MouseEvents') : document.createEventObject();  
     // W3C 
     if (oEvt.initMouseEvent) 
      oEvt.initMouseEvent(
       /* type*/   'mouseup', 
       /* bubble*/   true, 
       /* cancel*/   true, 
       /* AbstractView*/  window, 
       /* detail */  10, 
       /* screenX */  20, 
       /* screenY */  30, 
       /* clientX */  40, 
       /* clientY */  50, 
       /* ctrlKey */  false, 
       /* altKey */  false, 
       /* shiftKey */  true, 
       /* metaKey */  false, 
       /* button */  0, 
       /* relatedTarget*/ null) ; 
     // MSIE 
     else { 
       var oEvt = document.createEventObject(); 
       oEvt.detail = 10; 
       oEvt.screenX = 20; 
       oEvt.screenY = 30; 
       oEvt.clientX = 40; 
       oEvt.clientY = 50; 
       oEvt.ctrlKey = false; 
       oEvt.altKey = false; 
       oEvt.shiftKey = true; 
       oEvt.metaKey = false; 
       oEvt.button = 0; 
       oEvt.relatedTarget = null; 
     } 

W3C Mouse event types

我也寫在法語教程約firing DOM events ;我想翻譯起來很容易。

+0

仍然是同樣的事情。我只是''true'作爲'dispatchEvent'的返回值而沒有任何反應。 – davidk01

+0

@david:即使你讀不懂法語,你也可以閱讀[最後一章](http://hornetbzz.developpez.com/tutoriels/javascript/dom/#L5-E-1-C)。 – hornetbzz

+0

@david:thx。在bwn中,我知道關於DOM事件的[最佳鏈接](http://www.howtocreate.co.uk/tutorials/javascript/domevents)。 – hornetbzz