javascript - requestAnimationFrame 并知道浏览器何时重新绘制?

标签 javascript canvas requestanimationframe

有没有办法知道浏览器何时主动运行requestAnimationFrame

例如,当我从正在运行 requestAnimationFrame 的选项卡切换选项卡时,该函数将停止执行,当我切换回来时,它会继续执行,处理此问题的最佳方法是什么?

最佳答案

要检测 requestAnimationFrame 是否运行 100%,您可以检查:

window.addEventListener('blur', function() {
   //not running full
}, false);

window.addEventListener('focus', function() {
   //running optimal (if used)
}, false);

正如我们所知,当窗口(选项卡)不是事件窗口(IF 正在使用 - 这取决于实际使用 requestAnimationFrame 的代码)。

如果您希望它不断运行,您可以插入如下机制:

var isActiveTab = true; //update with the events above

function myLoop() {

    //my cool stuff here

    if (isActiveTab) {
         requestAnimationFrame(myLoop);
    } else {
         setTimeout(myLoop, 16); //force a rate (vblank sync not necessary
                                 //when display isn't updated
    }
}

请注意,requestAnimationFrame 速率的降低不是标准的一部分,而是浏览器特定的实现。

关于javascript - requestAnimationFrame 并知道浏览器何时重新绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218938/

相关文章:

javascript - jquery 编写的函数无法正常运行

javascript - 在 jQuery .get() 的 Data 对象中查找元素

javascript - 将 JavaScript 对象属性附加到另一个对象

css - 在 Chrome 中拖动时更改 HTML5 Canvas 上的光标

javascript - 如果加载图像,有没有办法使函数返回 true 或 false?

javascript - 使用 JS Canvas 绘制对象数组

javascript - setInterval() 不是删除之前绘制的图像

javascript - 如何同步运行requestAnimationFrame()?

javascript - polymer 1.x : Obtaining customStyles property value

javascript - 关于请求动画帧的问题