2012-04-04 110 views
2

我一直用JavaScript並沒有這樣的事情使用dojo/javascript觸發點擊事件?

​var div = document.getElementById("bob"); 
div.addEventListener("click", function(){alert('foo');});​​​​​​​​​​​ 

// all tests fail  
//div.click(); 
//div.onclick(); 
//div.onClick(); 

var div2 = document.getElementById("adam"); 
// works 
//div2.onclick(); 

var div3 = document.getElementById("iris"); 
div3.onclick = function(){alert('wat');}; 
// works 
//div3.onclick(); 

//How do I trigger the div (the first div, "bob") "click" event? 

代碼是在這裏:http://jsfiddle.net/TVrfF/, 取消註釋測試用例

所以,我怎麼可以觸發通過的addEventListener click事件設置(例如,DIV 「bob」)與dojo或純javascript?

另外,我應該放棄使用addEventListener從現在開始,只是使用element.onclick = function(){}由於這個問題我有? addEventListener的優點是什麼?

+1

document.getElementById(「iris」)。click()? – binarious 2012-04-04 22:27:03

回答

2

試試這個:

div.dispatchEvent("click"); 

文檔瀏覽:

https://developer.mozilla.org/en/DOM/element.dispatchEvent

+0

這個工作適用於IE,Chrome和其他主流瀏覽器嗎? IE瀏覽器使用fireEvent時出現的錯誤代碼: – Derek 2012-04-04 22:36:54

+0

<9使用fireEvent:http://msdn.microsoft.com/en-us/library/ie/ms536423%28v=vs.85%29.aspx – 2012-04-04 22:37:42

+0

我說得太快......這種方法只適用於自定義事件和一個'Event'對象必須被傳入,而不是事件名稱。 – 2012-04-04 22:45:55

0

是否有你需要通過模擬點擊,而不是隻直接調用函數來調用你的函數的一個原因?

var fnDoWork = function() { 
    alert('do work'); 
} 

var div = document.getElementById("bob"); 
dojo.connect(div, "onclick", fnDoWork);​​​​​​​​​​​ 

// some other code 
fnDoWork(); 

你做什麼失去了,沒有讓你點擊鼠標座標的事件。大多數時候這不應該是一個大問題。使用SVG時,我只需要這些。