javascript – setInterval有时会翻倍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – setInterval有时会翻倍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1373字,纯文字阅读大概需要2分钟。
内容图文
![javascript – setInterval有时会翻倍](/upload/InfoBanner/zyjiaocheng/730/3de23af4995447f5b5d04718c7799cd4.jpg)
我用JQuery创建了一个幻灯片脚本,我正在使用setInterval(我也试过了setTimeout并得到了同样的问题).问题是,当我进入一个新选项卡并回到我的页面时,幻灯片显示在幻灯片上似乎是双速.有时它甚至会减速并恢复正常速度.我很困惑为什么会这样做.请注意我此时只在FF中试过这个.
pictureAmount = 4;
fadeSpeed = 600;
delay = 6000;
heightOfPicture = 320; //px
function nextSlide(count) {
$('#slide-link').fadeOut(fadeSpeed, 'linear', function () {
document.getElementById('slide-link').style.backgroundPosition = '0 -' + (heightOfPicture * count) + 'px';
}).fadeIn(fadeSpeed, 'linear');
}
count = 0;
window.setInterval(function () {
if (++count >= pictureAmount) count = 0;
nextSlide(count);
}, delay);
这是链接http://mprodesigns.com/new
解决方法:
您所看到的是更新的浏览器中常见的(并且相当新的)行为.页面处于非活动状态时,它们会降低计时器的速度当你回到页面时,计时器“赶上”.
它有助于完全避免“setInterval()”并改为使用“setTimeout()”.让自己的代码在每次唤醒时重新设置超时.这样,您将无法运行许多待处理的调用程序调用.
因此,您可以执行以下操作,而不是“setInterval()”.
function timerHandler() {
if (++count >= pictureAmount) count = 0;
nextSlide(count);
setTimeout(timerHandler, delay);
}
setTimeout(timerHandler, delay);
通过增加最小延迟时间来施加“减速”效果.通常,当您专注于窗口时,它就像10或15毫秒.但是,当选项卡/窗口没有聚焦时,它就像1000毫秒.
编辑 – Here is a demonstration page,如果您离开选项卡并返回它,则不应显示异常加速.
内容总结
以上是互联网集市为您收集整理的javascript – setInterval有时会翻倍全部内容,希望文章能够帮你解决javascript – setInterval有时会翻倍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。