嗨,我正在开发一个需要一致间隔的 Web 应用程序。但是我注意到,当窗口失去焦点时,间隔将会消失。
我想知道是否可以嵌入一个设置无限循环的闪存来解决这个问题?
你不需要flash,你应该可以稍微修改你的动画代码,你只需要做这样的事情
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.stop(true,true).css("left", a);
}, 1000 / 30);
非活动浏览器选项卡缓冲一些 setInterval 或 setTimeout 函数。
stop(true,true) 将停止所有缓冲事件并立即执行最后一个动画。
window.setTimeout() 方法现在限制为在非活动选项卡中每秒发送不超过一个超时。此外,它现在将嵌套超时限制为 HTML5 规范允许的最小值:4 毫秒(而不是过去的 10 毫秒)。
最后我发现有两种方法可以解决这个问题。首先是使用 HTML 5 web workers。但是,在这种情况下不支持 ie。
第二种方法是将间隔计时器限制为不少于 1000 毫秒。这是因为间隔不会消失,而是最多停留在 1 秒。任何比这更高的频率都会被缓冲,这会导致问题。