Выполнение действия в состоянии холостого хода в JavaScript

StackOverflow https://stackoverflow.com/questions/4482155

Вопрос

Я пытаюсь настроить сценарий на веб -странице, которая выполняет следующее: если мышь неактивна в течение определенного времени (скажем, пять секунд), выполните действие (скажем, скрывая элемент); Затем, если мышь перемещалась, выполните действие (скажем, не укрывая элемент).

Я хочу каким -то способом выполнить действие по бездействии мыши пользователей (не обязательно бездействие клавиатуры).

Спасибо за вашу помощь.

Это было полезно?

Решение

Если вы используете jQuery:

(function() {
    var timeout;
    var isHidden = false;
    $(document).mousemove(function() {
        if (timeout) {
            window.clearTimeout(timeout);
        }
        timeout = window.setTimeout(function() {
            if (!isHidden) {
                //hide the element here
                isHidden = true;
            }
        }, 5000);
        if (isHidden) {
            //show the element here
            isHidden = false;
        }
    });
})();

Версия без jQuery:

(function() {
    var timeout;
    var isHidden = false;

    function hideOnIdle() {
        if (timeout) {
            window.clearTimeout(timeout);
        }
        timeout = window.setTimeout(function() {
            if (!isHidden) {
                //hide the element here
                isHidden = true;
            }
        }, 5000);
        if (isHidden) {
            //show the element here
            isHidden = false;
        }
    }

    if (document.addEventListener) {
        document.addEventListener("mousemove", hideOnIdle);
    } else {
        document.attachEvent("onmousemove", hideOnIdle);
    }
})();

jsfiddle

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top