我有一个网络应用程序,旨在在桌面和移动设备上(如iPhone)运行。一直以来,在iOS设备上都很好用,直到最近我们将其中一个设备升级到iOS6。现在我们发现一个奇怪的错误,似乎只出现在iOS6的Safari浏览器中。它仍然可以在iOS5的Safari浏览器上正常工作,而且在iOS6的Chrome浏览器上也可以正常工作。
这个bug似乎与我们查询更新数据的方式有关。我们设置了一个Ajax调用,每5秒钟一次。Ajax调用返回新数据,并且客户端使用新数据进行更新。现在在Safari/iOS6中看到的行为是,当上一次调用返回时,立即发生下一次调用,结果是页面不断刷新和重绘,使其无法使用。小加载图标也一直转动,让人感觉页面永远不会停止加载。
以下是设置它的客户端JavaScript代码:
这个bug似乎与我们查询更新数据的方式有关。我们设置了一个Ajax调用,每5秒钟一次。Ajax调用返回新数据,并且客户端使用新数据进行更新。现在在Safari/iOS6中看到的行为是,当上一次调用返回时,立即发生下一次调用,结果是页面不断刷新和重绘,使其无法使用。小加载图标也一直转动,让人感觉页面永远不会停止加载。
以下是设置它的客户端JavaScript代码:
$(document).ready(function(){
getUpdates();
var refresh = 5000;
setInterval("getUpdates()", refresh);
});
function getUpdates() {
$.post("status.jsp", {}, function(status){
// do client-side rendering here
}, "json");
}
这是Safari的一个bug吗?还是我的代码有问题?有没有解决办法?现在我的Web应用在iPhone上毫无用处,这不是一个好的情况。
setInterval("getUpdates()", refresh);
更改为setInterval(getUpdates, refresh);
以避免使用eval
。 - Andreas Louv