15

对于 JS 单元测试,我需要检查双击行为是否符合预期。问题是事件是通过 element.addEventListener 注册的。由于某种原因,在这种情况下, element.ondblclick() 不起作用。HTML:

<input type="image" src="pic.jpg" id="aa"/>

Javasript:

document.getElementById('aa').addEventListener("dblclick", function(){alert('aa')});
document.getElementById('aa').ondblclick();

小提琴:http: //jsfiddle.net/prZKy/

如果您双击图像,它可以工作,但 javascript 中的 ondblclick() 不起作用。

任何人都知道如何做到这一点?

4

2 回答 2

34

您可以使用dispatchEvent以编程方式触发事件:

var event = new MouseEvent('dblclick', {
    'view': window,
    'bubbles': true,
    'cancelable': true
  });
document.getElementById('aa').dispatchEvent(event);

请参阅MDN上的“触发内置事件”部分。

是实际代码的小提琴。

于 2013-08-23T09:25:24.637 回答
1

这应该有效:

var doubleClickEvent = document.createEvent('MouseEvents');
doubleClickEvent.initEvent('dblclick', true, true);
e.currentTarget.dispatchEvent(doubleClickEvent); // inside method
于 2017-06-07T10:35:04.837 回答