我玩弄生XmlHttpRequestObjects +彗星长轮询一点点。 (通常情况下,我让GWT或这对我来说另一个框架处理,但我想更多地了解它)彗星(长轮询)和XMLHttpRequest的状态
我写了下面的代码:
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()">...
我包裹longPoll()
呼叫if语句检查status > 0
,因为我遇到过,当我离开页面时(通过浏览其他地方或重新加载),发送最后一次不必要的彗星电话。 [和在Firefox,它做了重新加载页面时,由于某种原因,我不完全了解,甚至还造成严重的问题。]
问:那是status
检查正确的方式来处理这个问题,还是有更好的解决方案?
你不能只是看任何现有的实现,例如像你提到的GWT,jquery等? – fig 2010-04-12 19:07:54
@无花果gnuton:我不知道,如果它真的很容易。如果你有足够的知识能够与原始XHR发挥遵循生成的JavaScript代码(我不是一个JavaScript大师...) – 2010-04-12 19:24:44
,你会查看Jquery或其他库不会有任何问题。他们有完整的源代码版本。 – fig 2010-04-12 19:34:52