IE从onbeforeunload请求冻结

时间:2013-02-24 03:09:12

标签: javascript ajax internet-explorer browser freeze

由于在onbeforeunload JavaScript事件中发出请求,我遇到了Internet Explorer 7,8和9冻结的问题。这是一个复杂的网站,有很多事情要发生,但我已经设法将问题分成了一个小测试。在IE7中重现的确切步骤:

  1. 打开Internet Explorer 7
  2. 在测试的整个过程中保持一个标签打开(以保持相同的会话)
  3. 打开新标签页并转到http://www.brillbrothers.com/LockIE/test2/
  4. 关闭标签
  5. 重复步骤3和4,直到请求开始挂起(通常需要两次)。一旦它们挂起,根据我正在运行的网络代理/网络监视器,IE甚至不再提出请求。
  6. 在IE8中重现的步骤大致相同,尽管结果有点不同。它通常在前两次工作,然后间歇工作一段时间,然后请求每次都开始挂起。

    在IE9中,步骤仍然相同,但重现问题需要更长的时间。

    我无法在IE10中重现这一点。

    我还发现调整一些注册表值可以使问题更好。如果我将每个域的最大连接数更高(kb#282402),则问题需要更长时间才能重现。在这种情况下,我确实可以完全控制浏览器,因为它用于内部工具,因此任何类型的注册表更改等都可以,只要它不会导致任何不同的问题。

    我还设置了一个脚本来自动运行上述步骤。它基本上会打开测试URL的新窗口,等待几秒钟,然后关闭窗口。你可以在这里运行它来快速查看问题(你必须允许页面打开新窗口):http://brillbrothers.com/LockIE/test2/runTest.html

    疯狂的事情几乎所有事情似乎都会影响结果。如果我在AJAX调用中设置不同的cookie,更改AJAX调用的内容等,它可以使它以不同的方式工作。完全疯了。如果有人有解决方案,我会非常感动。 :)

0 个答案:

没有答案