Таймер Mousedown с использованием JavaScript / jQuery - PullRequest
1 голос
/ 23 мая 2011

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

Ответы [ 4 ]

14 голосов
/ 23 мая 2011

Вот, пожалуйста,

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

1 голос
/ 23 мая 2011

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

0 голосов
/ 26 февраля 2015

Проверьте это.http://jsfiddle.net/b1Lzo60n/

Mousedown запускает таймер, который проверяет, продолжает ли мышь работать в течение 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');
});
0 голосов
/ 23 мая 2011

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

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

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