web-dev-qa-db-ja.com

addEventListenerで定義されたdblclickイベントをプログラムで発生させる方法は?

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()は機能しません。

誰かがそれを行う方法についてのアイデアを持っていますか?

13
Stilltorik

dispatchEventを使用して、プログラムでイベントをトリガーできます。

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

[〜#〜] mdn [〜#〜] の「組み込みイベントのトリガー」のセクションを参照してください。

ここ は動作中のコードのフィドルです。

21
CodingIntrigue

これは機能するはずです:

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