我们的网站使用AJAX调用并使用XMLHTTPRequest
来实现这一目标。当客户端在一天中使用单个IE实例并在该IE中使用单独导航和重新编译页面时,我们最终会出现内存不足异常并被迫关闭IE。
通过在IE的Advnaced选项卡中启用选项Enable native XMLHTTP support
可以解决问题。由于我们优先于ActiveXObject上的原生XMLHTTP对象,因此可能由于使用ActiveXObject而导致异常。但仍然不确定可能是什么根本原因或是否还有其他更好的方法来解决问题。我们使用IE8。我们从未在其他浏览器(Firefox和Chrome)中遇到任何此类问题。感谢
答案 0 :(得分:6)
启用原生XMLHTTP支持意味着浏览器不会提供MSXML.HttpRequest,而是提供符合标准的window.XMLHttpRequest。我们成功地使用了两个版本而没有任何泄漏,所以我想它必须是你的代码中的一些实现问题 - 我只是在猜测,但是在DOMNodes上固定MSXML.HttpRequest实例(通过eventlistener)会导致这种情况。
答案 1 :(得分:2)
在我看来,最好的解决方案是推荐IE7用户始终使用此选项(它实际上没有任何缺点)并且忘记了旧浏览器。如果这不是某种选择,请尝试递归清除您在后备代码中创建的所有MSXML对象。
答案 2 :(得分:1)
由于HTML DOM,JavaScript执行引擎和XMLHTTPRequest对象之间的循环引用,实际上您正在泄漏XMLHTTPRequest对象。
您需要在请求完成时取消挂起事件并取消引用XMLHttp对象。 (要取消引用它们,请确保没有JavaScript对象或变量引用它们,包括onClick处理程序中的一小部分脚本等。
启用本机XMLHTTPRequest意味着外部组件被从循环中取出,因此DOM能够自己管理请求生存期。
另见@ PeterAronZentai的答案。