8

可能重复:
如何更改此代码,使其仅在没有鼠标移动时重定向

如果用户没有使用 Javascript 进行任何活动,我想刷新网页。用户活动,如按键或鼠标单击。

4

2 回答 2

16

这是一个基本的例子

(function(seconds) {
    var refresh,       
        intvrefresh = function() {
            clearInterval(refresh);
            refresh = setTimeout(function() {
               location.href = location.href;
            }, seconds * 1000);
        };

    $(document).on('keypress click', function() { intvrefresh() });
    intvrefresh();

}(15)); // define here seconds

这将在没有按键或点击事件的情况下每 15 秒刷新一次页面(但如果您在其他地方定义了相同的事件,则stopPropagation()这将无法正常工作,因为该事件将无法到达元素)

于 2012-06-01T11:33:19.857 回答
6

创建一个setTimeout将刷新页面的计时器( ),每次按下键或按下鼠标时,只需重新启动计时器。

请参阅此问题以获取执行您想要的大部分功能的代码。

FWIW,这是 F.Calderan 的答案改写为:

  1. 消除不必要的关闭
  2. 通过将动作提供为回调,将动作重复分开

--

function setIdle(cb, seconds) {
    var timer; 
    var interval = seconds * 1000;
    function refresh() {
            clearInterval(timer);
            timer = setTimeout(cb, interval);
    };
    $(document).on('keypress click', refresh);
    refresh();
}

setIdle(function() {
    location.href = location.href;
}, 15);
于 2012-06-01T11:35:45.700 回答