【发布时间】:2014-09-24 10:52:27
【问题描述】:
我在一个基于 dojo 的大型 web 项目中遇到了一个小问题(早于 dojo 1.7 的版本,据我所知是 1.3)。我想通过代码触发特定事件,但不知道如何实现。这是一个名为ondijitclick 的事件,它通过html 中的data-dojo-attach-event-attribute 进行注册。我也不能只调用此事件触发的方法,因为我只能在需要此功能的位置访问 domnode(或者我只是不知道如何访问属于此 domnode 的对象)。
我也有代码,我至少可以触发像“onclick”这样的常见事件:
if (document.createEventObject){
// IE
var evt = document.createEventObject();
node.fireEvent('onclick', evt);
}
else{
// other browsers
var evt = document.createEvent("HTMLEvents");
evt.initEvent('click', true, true );
node.dispatchEvent(evt);
}
我可以输入ondijitclick 事件,但什么都不会发生,也不会出现任何错误。 Visual Studio(带有 ReSharper)本身告诉我这个事件无法解决。因此,我认为不会触发任何事件,并且由于事件类型未知而忽略了命令。
最后整个问题是:是否存在通过 dojo 1.3 的代码(或 dojo 1.7 之前的版本的通用代码)触发此类事件的方法?
编辑:澄清需要针对 dojo 1.3 的解决方案
【问题讨论】:
-
我猜它应该是
dijitclick没有 on 前缀。由于您知道有一个 ondijitclick 事件,因此会有一个代码将该事件附加到 dijit。你能找出 ondijitclick 是如何连接到 dijit/dom 节点的吗? -
事件通过 html 模板文件中的属性附加。单击 ui 元素时,整个事情都会正确执行。所以一切正常。我只想通过“应用程序”中另一个位置的代码触发相同的操作。我无法通过javascript代码直接访问这个ui元素,只能使用dojo.query并获取domnode。不知何故,我找不到继承 ui 元素的点击逻辑或允许我访问该对象的对象。
标签: javascript dojo