开发者

Performing an action on idle state in JavaScript

I'm trying to开发者_开发技巧 set up a script in a webpage that does the following: if the mouse is inactive for a certain amount of time (say, five seconds), perform an action (say, hiding an element); then, if the mouse of moved, perform an action (say, un-hiding the element).

What I want is some way to perform an action on user mouse inactivity (not necessarily keyboard inactivity).

Thanks for your help.


If you are using 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;
        }
    });
})();

Non jQuery version:

(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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜