假设我在通过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小部件元素的代码,因此我无法重写事件的绑定方式。
感谢您的帮助!
答案 0 :(得分:1)
您需要以编程方式创建Event
对象并在文档上调用事件调度程序。不幸的是,你如何做到这一点取决于浏览器。
请参阅此问题:How to generate a right-click event in all browsers 和answer(另一个问题)关于事件调度的通用解决方案。
另一个更清洁,更好的解决方案是直接调用处理函数。但我不知道你是否可以访问它。