【问题标题】:How to programmatically fire a dblclick event defined with addEventListener?如何以编程方式触发使用 addEventListener 定义的 dblclick 事件?
【发布时间】:2013-08-26 07:00:04
【问题描述】:

对于 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()不起作用。

有人知道怎么做吗?

【问题讨论】:

标签: javascript events double-click


【解决方案1】:

这应该可行:

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

【讨论】:

    【解决方案2】:

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

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

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

    Here 是实际代码的小提琴。

    【讨论】:

    • @Nenotlep 因为 IE9 很烂,无法识别 dblclick 事件。您需要自己破解一个 click 处理程序,该处理程序设置超时,假装双击。 Yuck.
    猜你喜欢
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多