【问题标题】:Is it possible to stop a jQuery Timeout function when a user leaves the page?用户离开页面时是否可以停止 jQuery Timeout 功能?
【发布时间】:2015-04-27 16:18:58
【问题描述】:

我使用 jQuery 在视图中设置了一个计时器:

var timer, myDiv = $('#mydiv');
$(document).on('mousemove', function(ev) {
    var _self = $(ev.target);

    clearTimeout(timer);

    if (_self.attr('id') === 'mydiv' || _self.parents('#mydiv').length) {
        return;
    }    

    if(!myDiv.hasClass('show')) {
       myDiv.fadeIn();
    }          

    timer = setTimeout(function() { 
        myDiv.fadeOut(1000, function() {
            myDiv.removeClass('show');
        });
    }, 1960);    
});

我需要在一个唯一的页面中使用这个计时器,以便用户一直在那里。

当用户离开页面并进入另一个视图时,是否可以使用 jQuery 或 JavaScript 来停止计时器?

这里是DEMO

【问题讨论】:

  • myDiv.stop() 或许?
  • @AcidShout 感谢您的建议,但应该为用户仍在页面内的所有时间启用计时器
  • setTimeoutclearTimeout 都不是 jQuery 的东西。它们是 vanilla-js 的东西。

标签: javascript jquery ajax


【解决方案1】:

使用clearTimeout:

clearTimeout(mytimer);

【讨论】:

  • 已经试过了,但是在 Ajax 上我有问题,好像不行
  • 好的,我更新了更多代码,我试着合成:)
  • 所以你基本上想在用户离开页面后立即暂停超时?
  • 是的,我也不知道
  • 您还需要将创建的计时器包装在 $(window).focus() 事件中。看到这个小提琴:jsfiddle.net/ohyh3qsp/2
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 2018-03-19
  • 1970-01-01
相关资源
最近更新 更多