我有一些JavaScript,可以处理一些数字并绘制到HTML5画布上,从而创建动画。当看不到画布时,昂贵而连续的数字处理/绘图毫无意义。
因此,当用户看不到画布时(例如,因为他们切换了标签或最小化了浏览器或向下滚动或其他各种可能性),我想暂停计算。
在JavaScript中,当画布对用户不可见时,暂停定期计时器的好方法是什么? (并在再次显示画布时恢复计时器。)
最佳答案
在您以其他浏览器标签为重点的情况下,requestAnimationFrame
是理想的-它会在标签模糊时自动暂停其循环,并在标签焦点上自动恢复。
在滚动画布离屏方案中,您可以测试画布的.scrollTop(带有和不带有.height)与窗口的.scrollTop(带有和不带有高度)。
为了获得这两个测试的好处,请将.scrollTop测试放在requestAnimationFrame循环内。