长轮询-Internet Explorer 8的问题
Long Polling - Problems with Internet Explorer 8
我正在尝试使用Netty和jQuery实现长轮询。
我在Chrome和Firefox上都能正常工作,但InternetExplorer8给我带来了问题。
我正在执行以下代码,它向我的服务器发送一个请求,等待收到来自服务器的响应,然后发送另一个请求。
function longPollRequest() {
$.ajax({
url: '/test-path',
type: 'GET',
success: function(data, textStatus, jqXHR) {
longPollRequest();
console.log('Received: ' + data);
}
});
}
然而,在IE8中,我遇到了一个无限循环,它冻结了浏览器。有趣的是,我的服务器只收到了来自IE的第一个请求。我真的很困惑到底发生了什么。如果有人有任何想法,我会非常感谢你的帮助。
禁用缓存,看看这是否解决了您的问题:
function longPollRequest () {
$.ajax({
url : '/test-path',
type : 'GET',
cache : false,
success : function(data, textStatus, jqXHR) {
longPollRequest();
console.log('Received: ' + data);
}
});
}
这将强制jQuery为每个请求附加一个时间戳。如果响应被缓存,那么它会很快返回,很有可能这就是导致无限循环的原因。
您还可以强制AJAX请求之间的最小延迟:
let lastRequestTime = 0;
function longPollRequest () {
lastRequestTime = new Date().getTime();
$.ajax({
url : '/test-path',
type : 'GET',
cache : false,
success : function(data, textStatus, jqXHR) {
let delay = ((new Date().getTime()) - lastRequestTime);
if (delay > 1000) {
delay = 0;
} else {
delay = (1000 - delay);
}
setTimeout(longPollRequest, delay);
console.log('Received: ' + data);
}
});
}
这将检查当前时间与上次AJAX请求的时间。如果时间超过一秒钟,则立即再次运行该函数,否则请让代码等待一秒钟,直到两次请求之间结束。可能有一种更优雅的方法来定义delay
变量,但上面的代码应该让您开始。
相关文章:
- Backbone.js路由器和Internet Explorer重定向问题
- 如果调试器关闭,Internet Explorer将出现运行代码问题
- 使用大括号的 Internet Explorer 上的 AngularJS 数据绑定问题
- Internet Explorer 中的 JavaScript 方向更改问题
- 在internet explorer上使用jquery时出现问题
- KnockoutJS:Internet Explorer中的多选问题
- 在Internet Explorer 11中使用SoundCloud进行身份验证时出现问题
- Highcharts 4.0.4 Internet Explorer上的导出问题
- 这个Javascript出了什么问题"Internet Explorer无法打开Internet站点-操作中止
- 在Internet Explorer 8中的Iframe中创建TinyMCE时出现问题
- 禁用 Internet Explorer 8 jQuery 中的缓存问题
- Internet Explorer Ajax 调用,缓存响应问题
- Internet Explorer 9 和 JavaScript 变量范围问题
- Internet Explorer 中的 Json 响应问题
- 当单击 shift + 鼠标左键单击时,Internet Explorer 浏览器问题 ,文本会自动突出显示
- BHO Internet Explorer插件-脚本注入问题
- 使用Internet Explorer更新Kendo DropDownList时出现问题
- 从PowerShell打开Internet Explorer时出现问题
- HTML5拖放;Internet Explorer中的删除问题(无法访问dataTransfer属性)
- 长轮询-Internet Explorer 8的问题