Syl*_*van 4 crash jquery internet-explorer polling long-polling
我必须承认,这是我在这个网站上的第一篇文章,所以如果我做错了(格式化等),我会在建议中道歉.
无论如何,我正在使用javascript(和jQuery)创建一种mmo,到目前为止,Chrome,Safari,Firefox等都运行良好.但是,我发现在某个地方,Internet Explorer崩溃了.
通过重现崩溃,我把它缩小到这个代码:
function getUpdates(){
var data={uid:playerName,area:1,mid:lastMessage};
$.ajax({
url: "getUpdates.py",
timeout: 32000,
data: data,
type:"GET",
complete: function(obj, textStatus){
//handleUpdates(obj);
getUpdates();
}
});
}
Run Code Online (Sandbox Code Playgroud)
应该在很长一段时间内轮询更新.但是,在一次回复之后的IE中,这段代码陷入无限循环,这会使浏览器崩溃.只有在没有服务器响应时,每次回复后似乎都不会崩溃.
注意,表示"完成:......"的行已被尝试为:
success: function(...){getUpdates();...},
error: function(...){getUpdates();...}
Run Code Online (Sandbox Code Playgroud)
出现同样的问题.
SLa*_*aks 12
IE正在从缓存中立即返回AJAX调用.
您应该向URL添加随机参数以强制IE忽略其缓存,如下所示:
url: "getUpdates.py?RandomNumber=" + Math.random(),
Run Code Online (Sandbox Code Playgroud)
(你也可以用new Date)
此外,您应该通过添加5秒延迟来更慢地检查更新:
complete: function(obj, textStatus){
//handleUpdates(obj);
setTimeout(function() { getUpdates(); }, 5000); //milliseconds
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4425 次 |
| 最近记录: |