据报道,当软键盘打开时,setInterval会暂停。 (Android上的相同错误)
http://code.google.com/p/android/issues/detail?id=13540 http://www.barneyb.com/barneyblog/2011/02/20/settimeout-bug-in-android-2-2/
任何解决方法?我正在使用Ajax Load在setInterval上每隔x秒刷新内容的网站上工作。它适用于所有PC浏览器,但不适用于iPhone / Android。
答案 0 :(得分:0)
我知道这不是一个理想的解决方案,但你可以使用HTML5工作人员而不是setInterval(虽然我不知道他们是否也在后台暂停 - 我假设他们不是,那将是如果他们是非常奇怪的?)
它确实为不符合HTML5标准的PC浏览器增加了许多向后兼容性问题:(
http://www.sitepoint.com/javascript-threading-html5-web-workers/
答案 1 :(得分:0)
一种可能的解决方法是使用比所需的X秒刷新时间更短的间隔,但它只会在适当的时间过去时触发回调。当然更麻烦,但也不是那么复杂。
编辑:一些示例代码
var setiPhoneInterval = function(callback, delay){
var checkInterval = delay / 10; // break down original delay into 10 sub-intervals for checking
var lastFired = new Date();
var fire = function(){
var now = new Date();
if(now.getTime() - lastFired.getTime() > delay ){
lastFired = new Date();
callback();
}
};
var interval = setInterval(fire, checkInterval);
return interval;
};
var myCallback = function(){
console.log('fired!');
};
var foo = setiPhoneInterval(myCallback, 10000);
// and, you can still clearInterval if you'd like
// clearInterval(foo);