【发布时间】:2013-11-25 09:34:17
【问题描述】:
我的情况有点复杂,但我可以在以下示例中很快重现我的问题:
<html>
<head>
<script type="text/javascript">
function fnUnloadHandler() {
alert("Unload event.. session termination request to be sent to server");
}
function f() {
i = 1;
while(1==1){
i++;
}
}
</script>
</head>
<body onbeforeunload="fnUnloadHandler()">
<p><button href="#" onClick="f();" >do</button></p>
</body>
</html>
现在;一旦单击“do”按钮,f() 就会无限循环地获取浏览器。在那段时间里,如果我关闭页面,我会得到两种不同的行为:
- 在 IE7 上:终止 Javascript 执行,触发 onbeforeunload 事件并显示警报然后关闭页面。
- 在IE9:终止Javascript执行,触发onbeforeunload事件NO并显示NO警报并直接关闭页面。
我想知道为什么 IE9 在这种情况下不能正确处理 onbeforeunload .. 是否有任何修复/补丁可应用于 IE9 来解决此问题?
非常感谢!
菲拉斯
【问题讨论】:
-
我猜这是因为在 IE7 中有 2 个不同的线程用于处理 f() 调用和 onbeforeload 事件......但你到底想达到什么目的?为什么要进入无限循环
-
嗨 Shai,实际上我的产品中肯定没有这个循环 :-),我只是想抽象一下这个问题.. 循环模拟 IE 上的繁重 JS 处理,最多需要 5 秒。并且在此期间关闭页面时会出现问题。
标签: javascript html internet-explorer internet-explorer-9 onbeforeunload