Как программно запустить событие dblclick, определенное с помощью addEventListener?

для модульного теста JS мне нужно проверить, что двойной щелчок ведет себя так, как ожидалось. Вопрос в том, что событие было зарегистрировано через элемент.метода addEventListener. И почему-то, в данном случае, элемент.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/

Если вы дважды щелкните изображение, оно работает, но ondblclick() в javascript не работает.

у кого есть идея, как это сделать?

2 ответов


можно использовать dispatchEvent для программного запуска событий:

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

см. раздел "запуск встроенных событий" на MDN.

здесь является скрипкой кода в действии.


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

Это должно работать.