设置间隔不清除用户离开窗口
setInterval not clearing when user leaves window
我有一个我制作的代码笔演示,它使用了setTimeout
和setInterval
的几个实例。我发现如果用户离开页面,setInterval
存在问题。
您可能会注意到,如果在此间隔运行时离开页面,则数字将永远继续递增。间隔基本上没有被清除。否则就可以了。
下面是setTimeout
中setInterval
实例之一的示例。
setTimeout(function() {
var x = parseInt($one.text());
handle = setInterval(function() {
if (x > -5) {
x--;
$one.html(x + 'px');
}
else {
clearInterval(handle);
handle = null;
}
}, 200);
$box.animate({
boxShadow: '-5px 0 0 0 #333'
}, 2000);
}, 7000);
我尝试在我的 if/else 语句中添加 clearInterval(handle)
和 handle = null
,但我根本无法获得清除用户离开页面的间隔。我还有其他方法可以解决这个问题setInterval
吗?这只是一个JavaScript限制吗?
更新
奇怪的是,当我记录x
值时,控制台显示它正确显示 -1 到 -4 数字。clearInterval
不是从另一个窗口运行吗?
您可以使用
setTimeout
代替像这样的setInterval
:-
setTimeout(function() {
var x = parseInt($one.text());
function callOnTimeOut(){
setTimeout(function() {
if (x > -5) {
x--;
$one.html(x + 'px');
callOnTimeOut();
}
}, 200);
}
callOnTimeOut();
$box.animate({
boxShadow: '-5px 0 0 0 #333'
}, 2000);
}, 7000);
相关文章:
- 定时Ajax进程在用户离开页面后继续
- 在用户离开或关闭页面之前保存HTML5视频currentTime
- 如何使用JS触发用户离开站点事件
- 若文本框中包含文本,则不允许用户离开页面
- 如何在用户离开Jquery Mobile中的页面后恢复默认HTML元素
- 检测用户离开页面的正确方法
- 如何在用户离开网页时显示模态窗口
- 当用户离开图表区域时,删除同步图表中的工具提示
- 当用户离开页面时调用 JavaScript 函数
- VueJS & Laravel,在用户离开屏幕时发出后请求
- 智能手机:如何检测用户离开浏览器
- 用户离开页面时的事件
- 当用户离开网页时添加到 Apache 日志文件
- 设置间隔不清除用户离开窗口
- 谷歌分析如何检测用户离开页面
- 从用户离开页面时的位置重新启动计时器
- 当用户离开我的网站时,将标题附加到页面(他们也会这样做)
- AJAX 和用户离开页面
- 如果所有 ajax 都未完成并且用户离开窗口或页面
- 如何在用户离开(关闭)页面时发送 AJAX 请求