2017-10-19 12 views
1

JavaScript의 두 번 클릭 이벤트에 몇 가지 문제가 있습니다.두 번 클릭 이벤트가 실행되지 않음

빠르게 연속적으로 요소를 클릭 할 수 있지만 두 번 클릭하면들을 수 있기를 원합니다. 기술적으로 가능합니까? 한 번의 클릭으로 두 번 클릭하면들을 수 있어야합니까?

코덱스 예 here.

JS도 아래에서 찾을 수 있습니다.

(function() { 

    var el; 
    var count = 0; 
    var counter; 

    function init() { 
    el = document.getElementById('click-me'); 
    counter = document.getElementById('counter'); 

    el.addEventListener('dblclick', onDblClick, false); 
    } 

    function onDblClick(e) { 
    count++; 
    counter.textContent = count; 
    } 

    init(); 

}()); 

뭔가 더블 클릭 한 후, 당신이 어쩌면 초 0.5 초 이벤트를 재설정 할 수 있도록 짧은 일시 정지를 떠날 필요가 보인다?

내가 dblclick 이벤트 자체에서 누락되었거나 내가 할 수없는 일이 무엇입니까?

P. 이것은 Webkit/Chrome에서 작동 할 필요가 있습니다. 이는 웹 사이트가 아니라 게임의 오버레이이기 때문입니다. 이 같은

+0

나는 당신의 codepen을 분노 클릭 할 수 있고 잘 증가 유지합니다. 특정 브라우저/장치/입력 방법에 문제가 있습니까? – Fenton

+0

@Fenton 그것이 작동하는 동안, 때때로 나를 위해 실패합니다 (더블 클릭 3 번 걸립니다). Chrome 61에서 실행됩니다. – Adriani6

+0

Edge, IE 및 Firefox에서 작동하는 것처럼 보입니다. Chrome/Webkit에서 작동하려면 웹 사이트 전용이 아니므로 필요합니다. 내 질문을 업데이트 할게. – ChronixPsyc

답변

1

뭔가 (https://gist.github.com/karbassi/639453) :

(function() { 

    var el; 
    var count = 0; 
    var counter; 
    var clickCount = 0; 

    function init() { 
    el = document.getElementById('click-me'); 
    counter = document.getElementById('counter'); 

    el.addEventListener('click', onDblClick, false); 
    } 

    function onDblClick(e) { 

    clickCount++; 
    if (clickCount === 1) { 
     singleClickTimer = setTimeout(function() { 
      clickCount = 0;    
     }, 400); 
    } else if (clickCount === 2) { 
     count++; 
     clearTimeout(singleClickTimer); 
     clickCount = 0; 
     counter.textContent = count; 
    } 
} 
    init(); 

}()); 
+0

고마워요! 이게 가장 좋은 해결책 인 것 같습니다. 'dblclick'은 제가 사용하고있는 Webkit 엔진에서 매우 일관성있는 것으로 보이지 않습니다. – ChronixPsyc