首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当一个标签在Chrome中处于非活动状态时,我如何让setInterval也能工作?

当一个标签在Chrome中处于非活动状态时,我如何让setInterval也能工作?
EN

Stack Overflow用户
提问于 2011-05-08 19:58:41
回答 10查看 160.8K关注 0票数 227

我有一个setInterval每秒运行一段代码30次。这很有效,但是当我选择另一个选项卡时(这样包含我代码的选项卡变得不活动),由于某种原因,setInterval被设置为空闲状态。

我做了这个简化的测试用例(http://jsfiddle.net/7f6DX/3/):

代码语言:javascript
运行
复制
var $div = $('div');
var a = 0;

setInterval(function() {
    a++;
    $div.css("left", a)
}, 1000 / 30);

如果运行此代码,然后切换到另一个选项卡,等待几秒钟并返回,动画将从切换到另一个选项卡时的位置继续播放。因此,动画每秒不会运行30次,以防标签处于非活动状态。这可以通过计算每秒调用setInterval函数的次数来确认-如果选项卡处于非活动状态,该次数将不是30次,而是1次或2次。

我猜这是为了提高性能而设计的,但是有没有办法禁用这种行为呢?在我的场景中,这实际上是一个缺点。

EN

Stack Overflow用户

发布于 2020-02-19 17:23:43

这是一个很老的问题,但我遇到了同样的问题。

如果你在chrome上运行你的网站,你可以通读这篇文章的Background Tabs in Chrome 57

基本上,如果时间间隔计时器没有用完计时器预算,它就可以运行。

预算消耗基于定时器内任务的CPU时间使用情况。

根据我的场景,我将视频绘制到画布并传输到WebRTC。

即使选项卡处于非活动状态,webrtc视频连接也会保持更新。

但是,您必须使用setInterval而不是requestAnimationFrame

不过,不建议将其用于UI渲染。

侦听visibilityChange事件并相应地更改呈现机制会更好。

此外,你可以尝试@kaan- could,它应该可以基于文档工作。

票数 1
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5927284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档