문제

사용자가 (웹 페이지 어디에서나) 마우스 버튼을 누르고 있는 시간을 어떻게 알 수 있나요?사용자가 마우스 버튼을 2~3초 이상 누르고 있을 때 기능을 실행하고 싶습니다(이 과정에서 마우스 버튼을 취소하는 것이 바람직함).이것이 가능한가?

도움이 되었습니까?

해결책

여기에 있습니다 :

$(window).mousedown(function(e) {
    clearTimeout(this.downTimer);
    this.downTimer = setTimeout(function() {
        // do your thing 
    }, 2000);
}).mouseup(function(e) {
    clearTimeout(this.downTimer);
});
.

라이브 데모 : http://jsfiddle.net/simevidas/pe9sq/2/

다른 팁

나는 즉시 실험 할 것입니다 $("body").mousedown(function(){}) jQuery를 사용하여 $("body").mouseup(function(){}).2~3초 안에 함수를 호출하는 타이머를 시작할 수 있을 것 같습니다.만약 mouseup 이벤트가 발생하면 타이머를 취소할 수 있습니다.간단한 스크립트로 테스트할 수도 있지만 다음과 같은 경우를 살펴봐야 할 수도 있습니다. click 페이지에서 링크나 버튼을 클릭했기 때문에 발생했을 수 있습니다.하지만 시작점으로 나는 $("body").mousedown 그리고 $("body").mouseup.기회가 된다면 코드 샘플을 보낼 수 있는지 알아보겠습니다.

시도 :

function WhateverYoudLikeToExecWithinNext3Seconds(){
    // Code goes here.
}

element.addEventListener('mousedown', function(){
    setTimeout(function(){WhateverIdLikeToExecWithin3Seconds();}, 3000);
}, false);
.

Check out this one. http://jsfiddle.net/b1Lzo60n/

Mousedown starts a timer that checks if mouse is still down after 1 second.

<button id="button">Press me</button>
<div id="log"></div>

Code:

var mousedown = false;
var mousedown_timer = '';
$('#button').mousedown(function(e) {
    mousedown = true;
    $('#log').text('mousedown...');
    mousedown_timer = setTimeout(function() {
        if(mousedown) {
            $('#log').text('1 second');
        }
    }, 1000);
}).mouseup(function(e) {
    mousedown = false;
    clearTimeout(mousedown_timer);
    $('#log').text('aborted');
});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top