日期:2014-05-17  浏览次数:20417 次

求解决一个JS问题,火狐在页面关闭的时候不执行onunload事件
onunload事件是关闭刷新等作出离开页面操作时会被触发

但是我使用的时候在IE8下关闭页面时改事件被触发了,在火狐下却不行。刷新页面的时候火狐和IE都执行了该事件,就是关闭页面的时候火狐没有执行这个事件


代码如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" charset="utf-8" src="js/jquery.min.js"></script>
    <script type="text/javascript">
       function perforresult() {
           alert("a");
       }
    </script>
 
 
 
</head>
<body onunload="perforresult();">
 
    
</body>
</html>


怎么让火狐在关闭页面的时候执行onunload



我本来要做出的效果是
用户关闭页面的时候让用户选择是否退出
是的时候就执行一个函数,否就不执行了


如下代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" charset="utf-8" src="js/jquery.min.js"></script>
    <script type="text/javascript">
       function perforresult() {
           alert("a");
       }
 
       function checkLeave() {
           return 'b';
       }
    </script>
  
  
  
</head>
<body onunload="perforresult();" onbeforeunload="return checkLeave()">
  
     
</body>
</html>




绑定这两个事件  因为onbeforeunload事件在onunload事件的前面执行,所以可以阻止onunload事件执行
这样的话当用户选择否的时候就什么都没执行,当用户选择是的时候就执行onunload事件里面的函数

选择的问题就是onunload函数在关闭页面的时候在IE下执行了,在火狐下没有执行。
怎么解决onunload事件在火狐下关闭页面的时候能够被执行 





当页面关闭或刷新时就会执行onbeforeunload事件

给出一个对话框让用户选择是否执行

我想获取到用户选择的结果

就是在网上找了半天就是找不到怎么获取用户选择的是确定还是取消

现在解决我的问题的方法只有2个 

第一个就是获取到用户选择的结果,在用户选择确定时候执行我的函数

第二个就是解决onunload事件在火狐下关闭页面的时候能够被执行
这样我就可以在这个事件函数里面写我要执行的东西了 

------解决方案--------------------
可以用jquery

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 //加载load事件  
});
</script>

------解决方案--------------------
我所知道的是 无法解决,目前应该只有IE才支持 onbeforeunload 事件
------解决方案--------------------
我以前也遇到过同样的问题  对于浏览器关闭现在一直没有很好的解决方案,比如不点右上角的X 在任务栏里面选择关闭,或者如果是多个标签时进行关闭。好多的地方