Как программно запустить событие 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
Это должно работать.