使用Comet或Ajax Long Pull技术时 - 通常使用iframe.虽然iframe正在等待关闭的长连接,但浏览器正在旋转它的悸动(进度/加载指示器).
一些网站,例如etherpad.com,设法让它停止.
他们是如何做到的呢?
我正在玩一些原始的XmlHttpRequestObjects + Comet Long Polling.(通常,我会让GWT或其他框架为我处理此问题,但我想了解更多信息.)
我写了以下代码:
function longPoll() {
var xhr = createXHR(); // Creates an XmlHttpRequestObject
xhr.open('GET', 'LongPollServlet', true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
...
}
if (xhr.status > 0) {
longPoll();
}
}
}
xhr.send(null);
}
...
<body onload="javascript:longPoll()">...
Run Code Online (Sandbox Code Playgroud)
我将longPoll()一个if语句包装起来status > 0,因为我遇到了,当我离开页面时(通过浏览其他地方或重新加载它),最后一个不必要的彗星调用被发送.[在Firefox上,它甚至在进行页面重新加载时会导致严重的问题,由于某些原因我还没有完全理解.]
问题:这是status检查处理此问题的正确方法,还是有更好的解决方案?
这是Google无法回答的问题.我正在使用XMLHttpRequest对多人游戏进行一些HTTP"长轮询".在Chrome中,这会导致标签始终"加载":(1)标签中的图标不断播放加载动画(2)光标始终是沙漏(3)状态永远存在于视图的底部地区说"联系localhost"
我确信其他人已经碰到了这个,但我还没找到他们.
ajax ×2
comet ×2
javascript ×2
loading ×2
hourglass ×1
long-polling ×1
progress ×1
throbber ×1