javascript监控浏览器上的关闭和刷新操作

来源:互联网 发布:移动数据管理软件 编辑:程序博客网 时间:2024/05/18 00:43

因为在后台执行了一个死循环进程,需要在退出当前界面的时候将其kill,所以需要在关闭浏览器和刷新时调用函数执行操作

onunload和onbeforeunload 事件是在用户退出页面时(关闭页面或刷新页面)发生,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无 法阻止页面的更新和关闭的。而 Onbeforeunload 可以做到

且在页面卸载之前引发onbeforeunload事件,如果选择“确定离开”将引发onunload事件,若取消,则不做任何操作,故我的操作是:

  window.onbeforeunload = onbeforeunload_handler;
  window.onunload = onunload_handler;
    function onbeforeunload_handler(){
            var warning="您确认是否要退出当前页面?";
            return warning;
        }

       function onunload_handler(){
           $.get(url , {'c':'interface','a':'start'} , function( data ) {
           });    //传递参数并调用PHP中的函数操作,来kill死循环进程
       }


附1:如果需要区别刷新和关闭页面的操作,可以参考http://blog.csdn.net/laoxiao1987/article/details/9007571


附2:

NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMWindow.alert]
在参照网上查找的资料,在   function onunload_handler()函数中,添加了代码alert(warning),结果在firebug中显示上面的问题,将alert代码注释掉后就没有问题了,查找了资料,网上的说法有:
1.因为onunload函数是在body已经关闭后才调动的,所以如果使用alert的话(alert父窗口是body)就会报错或不显示
2.firfox连续弹出相同的值的框,会报一个“阻止此页面创建其他对话框的提示”
个人觉得第一种解释更符合我代码的情况,如果您阅读了该篇文章,且遇到相同的问题或者您有其他解释,希望能多多交流,谢谢