症状
请考虑以下情况:
-
使用Internet Explorer 10浏览到特定网页。
-
网页包含一个脚本,该脚本在打开网页时发出异步 XMLHttpRequest (XHR) 请求。
-
在 XHR 请求期间关闭网页。
-
XHR 请求的响应大于 2 KB (包括标头数据) 。
在此方案中,可能会失去与给定主机的 HTTP 连接。 然后,当你尝试浏览到主机上的另一个网页时,可能会遇到网络冻结。 当失去与主机的最大并发连接数时,会出现此问题。
请注意,此问题发生在 Internet Explorer 7、Internet Explorer 8 和 Internet Explorer 9 文档模式Internet Explorer 10中。
解决方法
安全更新信息
若要在 Internet Explorer 9 或 Internet Explorer 10 中解决此问题,请安装 Internet Explorer 的最新累积安全更新。 为此,请转到以下 Microsoft 网站:
解决方法
要解决此问题,请使用下面的方法之一:
-
将 XHR 请求更改为同步请求。
请注意,此解决方法与最佳编程做法相符,如果没有响应,可能会导致 Web 浏览器冻结。 有关详细信息,请参阅为何应异步使用 XMLHttpRequest。
为了避免Windows Internet (WinINet) 连接与 AJAX 一起泄漏,可以在窗口关闭之前结束现有连接。
请注意,有关如何解决连接泄漏的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:886710 Internet Explorer 似乎停止响应,你可能还会注意到计算机上的内存泄漏
-
将 window.open 方法替换为 window.showModalDialog 方法。
请注意,此解决方法会阻止用户与父窗口交互,直到子窗口关闭。 -
结束来自 OnUnLoad 事件的现有异步 XHR 请求。 例如:
function unloadEventHandler() { if (g_xmlHttpRequest != null && g_xmlHttpRequest.readyState != 4) { g_xmlHttpRequest.abort(); } }
-
不要从 OnUnLoad 事件进行异步 XHR 调用。
请注意,即使从 OnLoad 事件发出调用,此问题仍可能发生。 -
升级到Internet Explorer 10并确保使用本机 XHR 实现。
-
增加最大连接数。
更多信息
有关软件更新术语的更多信息,请单击下面的文章编号以查看 Microsoft 知识库中的相应文章:
824684 有关用于描述 Microsoft 软件更新标准术语的说明
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。