2013-08-23 1 views
9

JS 단위 테스트의 경우 두 번 클릭이 예상대로 작동하는지 확인해야합니다. 문제는 해당 이벤트가 element.addEventListener를 통해 등록 된 것입니다. 그리고 어떤 이유로이 경우 element.ondblclick()이 작동하지 않습니다. HTML :addEventListener로 정의 된 dblclick 이벤트를 프로그래밍 방식으로 시작하는 방법?

<input type="image" src="pic.jpg" id="aa"/> 

기능인 자바 스크립트를 :

 
document.getElementById('aa').addEventListener("dblclick", function(){alert('aa')}); 
document.getElementById('aa').ondblclick(); 

바이올린 : http://jsfiddle.net/prZKy/

하면 이미지를 더블 클릭, 그것은 작동하는 경우,하지만 자바 스크립트의 ondblclick()가 작동하지 않습니다.

누구나 어떻게 할 수 있습니까?

+0

는 – karaxuna

+1

는 흥미롭게도,이 작품 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent - http://jsfiddle.net/MNx9K/ 이유는 무엇입니까? – Vandesh

답변

12

당신은 프로그래밍 방식으로 이벤트를 트리거 할 dispatchEvent를 사용할 수 있습니다

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

이 섹션을 참조하십시오 "트리거링을 내장 이벤트"MDN에.

Here은 작동중인 코드의 피들입니다.

+0

나를 위해 IE9에서 작동하지 않습니다. – Nenotlep

+3

@Nenotlep IE9가 엉덩이를 빨아 먹고'dblclick' 이벤트를 인식하지 못하기 때문에. 타임 아웃을 설정하는 두 번 누르기를 조작하는'click' 핸들러를 해킹해야합니다. [헉] (http://stackoverflow.com/questions/17408714/double-click-using-ie). – CodingIntrigue

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

이 작동합니다.