如何触发使用dojoAttachEvent附加的事件?

时间:2011-07-14 15:41:09

标签: javascript javascript-events dojo

假设我在通过dojo小部件创建的网页上有一个元素,该小部件使用dojoAttachEvent附加事件,如下所示:

<span id="menuItemIWantToTrigger" dojoattachevent="onMouseOver: onHover; onMouseOut: onUnhover; onClick: _onClick;" class="dojoMenuItem2" style="-moz-user-select: none;" dojoinsertionindex="4">Workflow...</span>

我需要单击页面上的另一个元素来触发widget元素上的onClick事件。在Firefox 5中,我可以使用普通的JavaScript .click()方法远程触发事件,如下所示:

document.getElementById('menuItemIWantToTrigger').click();

在其他浏览器(如Firefox 3.6和4)中,该方法不起作用。似乎那些浏览器没有将触发的click事件传递给widget的dojoAttachEvent处理程序,但是Firefox 5(以及奇怪的是,IE 7)会这样做;事实上,那些浏览器似乎完全像普通的旧DOM事件一样处理dojoAttachEvents。那么,有什么方法可以在所有浏览器中触发onClick dojoAttachEvent,就像我在Firefox 5中触发它一样吗?

一个重要的注意事项:我无法访问创建dojo小部件元素的代码,因此我无法重写事件的绑定方式。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您需要以编程方式创建Event对象并在文档上调用事件调度程序。不幸的是,你如何做到这一点取决于浏览器。

请参阅此问题:How to generate a right-click event in all browsersanswer(另一个问题)关于事件调度的通用解决方案。

另一个更清洁,更好的解决方案是直接调用处理函数。但我不知道你是否可以访问它。