如何以编程方式触发使用addEventListener定义的dblclick事件?

时间:2013-08-23 09:19:36

标签: javascript events double-click

对于JS Unit测试,我需要检查双击是否按预期运行。问题是该事件是通过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()不起作用。

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

2 个答案:

答案 0 :(得分:19)

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

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

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

Here是行动代码的缩影。

答案 1 :(得分:1)

这应该有效:

var doubleClickEvent = document.createEvent('MouseEvents');
doubleClickEvent.initEvent('dblclick', true, true);
e.currentTarget.dispatchEvent(doubleClickEvent); // inside method