Таймер наведения курсора мыши с использованием JavaScript / jQuery

#javascript #jquery #mousedown

#javascript #jquery #наведение курсора мыши

Вопрос:

Как я могу узнать, как долго пользователь удерживал нажатой кнопку мыши (в любом месте веб-страницы)? Я хочу выполнить функцию, когда пользователь удерживал кнопку мыши не менее 2-3 секунд (предпочтительно, отменяя нажатие мыши в процессе). Возможно ли это?

Ответ №1:

Держи, ты идешь:

 $(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 /

Ответ №2:

С другой стороны, я бы поэкспериментировал с $("body").mousedown(function(){}) использованием jQuery и $("body").mouseup(function(){}) . Я думаю, вы можете запустить таймер, который вызовет функцию через 2-3 секунды. Если mouseup произойдет событие, то вы можете отменить таймер. Вероятно, вы могли бы протестировать это с помощью простого скрипта, но вам, возможно, придется рассмотреть случаи, когда click это могло произойти из-за нажатия ссылки или кнопки на странице. Но в качестве отправной точки я бы поэкспериментировал с $("body").mousedown и $("body").mouseup . Если у меня будет возможность, я посмотрю, смогу ли я отправить пример кода.

Ответ №3:

Попробуйте это:

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

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

Ответ №4:

Посмотрите на это. http://jsfiddle.net/b1Lzo60n

При наведении курсора мыши запускается таймер, который проверяет, по-прежнему ли мышь отключена через 1 секунду.

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

Код:

 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');
});