2012-04-04 95 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时,我只需要这些。