Ons*_*aru 5 javascript dojo mouseevent
我想在我的javascript代码中使用dojo来模拟鼠标点击.使用带有"ondijitclick"的dojo-stuff注册真正鼠标点击的动作.
我知道调用哪个方法/函数,我也有dijit对象来调用这个方法.该方法需要一个函数对象作为参数,所以我正在创建一个新的MouseEvent对象.这一切都很好,除了我需要设置此事件的目标值,我无法弄清楚如何做到这一点.这是必需的,因为后来的异常处理正在访问target-property,我无法避免这种情况.
到目前为止我的代码:
dojo.query(".mybutton").forEach(function (node) {
var target = dojo.query(".myclass").parents("#" + node.id)[0];
var event = new MouseEvent('click', {
'view' : window,
'bubbles': true,
'cancelable': true
});
dijit.byId(node.id)._doEvent(event);
});
Run Code Online (Sandbox Code Playgroud)
如果我添加以下行
'target' : target,
Run Code Online (Sandbox Code Playgroud)
在MouseEvent创建中,将不会设置该属性(但所有其他属性都将设置),并且target-property将为null,但target本身不为null.
是否有可能以某种方式设置目标属性?如果有可能我想知道我做错了什么?
编辑:
我发现了一个非常脏的解决方案,其中包括来自底层框架的小部件中的最小但不期望的更改.
我只能实现relatedTarget属性设置,而target仍然是null.如果检查target属性为null,并且如果它为null,则relatedTarget在widgets方法中,一切都按预期工作.模拟的点击和真正的点击都正常工作.
这个解决方案的唯一问题是我必须修改框架中的小部件.这是我们在发布版本中不会做的事情.这是一种可能的解决方案,但实际上这种解决方案对我们来说是不可接受的.
因此,仍然存在如何target使用正确的值设置属性的问题.正如解决方案在genereal中所显示的那样,除了设置target属性外,它都可以工
我无法看到这是通过Ferry Kranenburg提出的解决方案实现的.如果这个解决方案能够满足我的需要,那么如果有人可以向我解释这个技巧,那就太好了.
target初始化事件时,无法访问事件对象的属性.它指向触发事件后接收事件的第一个元素,并由JavaScript内部设置到该元素.因此,如果您需要一个特殊元素作为事件目标,则必须将事件分派给该元素.
一种方法是使用您自己的方法覆盖本机目标属性,但这可能会影响事件的冒泡行为.
dojo.query(".mybutton").forEach(function (node) {
var target = dojo.query(".myclass").parents("#" + node.id)[0];
var event = new MouseEvent('click', {
'view' : window,
'bubbles': true,
'cancelable': true
});
Object.defineProperty(event, 'target', {value: target, enumerable: true});
dijit.byId(node.id)._doEvent(event);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3545 次 |
| 最近记录: |