由于在onbeforeunload JavaScript事件中发出请求,我遇到了Internet Explorer 7,8和9冻结的问题。这是一个复杂的网站,有很多事情要发生,但我已经设法将问题分成了一个小测试。在IE7中重现的确切步骤:
在IE8中重现的步骤大致相同,尽管结果有点不同。它通常在前两次工作,然后间歇工作一段时间,然后请求每次都开始挂起。
在IE9中,步骤仍然相同,但重现问题需要更长的时间。
我无法在IE10中重现这一点。
我还发现调整一些注册表值可以使问题更好。如果我将每个域的最大连接数更高(kb#282402),则问题需要更长时间才能重现。在这种情况下,我确实可以完全控制浏览器,因为它用于内部工具,因此任何类型的注册表更改等都可以,只要它不会导致任何不同的问题。
我还设置了一个脚本来自动运行上述步骤。它基本上会打开测试URL的新窗口,等待几秒钟,然后关闭窗口。你可以在这里运行它来快速查看问题(你必须允许页面打开新窗口):http://brillbrothers.com/LockIE/test2/runTest.html
疯狂的事情几乎所有事情似乎都会影响结果。如果我在AJAX调用中设置不同的cookie,更改AJAX调用的内容等,它可以使它以不同的方式工作。完全疯了。如果有人有解决方案,我会非常感动。 :)