【发布时间】:2012-10-31 16:28:12
【问题描述】:
我有一个 Web 应用程序,旨在在 iPhone 等台式机和移动设备上运行。它在 iOS 设备上一直运行良好,直到我们最近将其中一台设备升级到 iOS6。现在我们看到了一个奇怪的错误,它似乎只针对 iOS6 上的 Safari。它在 iOS5 Safari 上仍然可以正常工作,在 iOS6 Chrome 上也可以正常工作。
该错误似乎与我们查询服务器以获取更新的方式有关。我们已将 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 中的错误吗?我的代码中的错误?有解决方法吗?我的网络应用程序现在在 iPhone 上没用,情况不是很好。 谢谢!
【问题讨论】:
-
ios6 safari 缓存 ajax 结果。看到这个question
-
fyi 您可以将
setInterval("getUpdates()", refresh);更改为setInterval(getUpdates, refresh);以防止eval被使用。 -
NuclearGhost,已经修复了,你能把它放在答案中,我可以接受并提供一些 cmets 吗?
标签: javascript jquery safari ios6 mobile-safari