关于浏览器的卸载事件

时间:2010-10-15 06:28:29

标签: javascript

HI

我想从客户端页面超时会话,我尝试下面的代码,但不能执行代码需要一些帮助,如何我可以处理来自用户的OK或CANCEL事件

<script>

 function onBeforeUnloadAction(){

    return "Would u like to discard Changes";

 }

 window.onbeforeunload = function(){
   if((window.event.clientX<0) ||
      (window.event.clientY<0))
{
     return onBeforeUnloadAction();

   }
 }

 </script>

2 个答案:

答案 0 :(得分:2)

beforeunload event只能用于向用户显示他/她将要离开当前页面的对话框。此对话框由浏览器控制,您只能自定义对话框的警告,而不是结果。因此,您无法根据对话框的结果执行操作。这主要是出于安全考虑,以防止人们被迫留在当前页面上。

如果要在此人离开当前页面后清除任何会话数据,您应该考虑使用这些替代结构中的一个(或几个):

  1. 在页面上填写您自己的“后退”或“取消”按钮,您可以处理该按钮以显示您自己的对话框并执行清理。
  2. 记录每个会话的服务器请求,并对那些在特定时间间隔内未发出任何请求的会话执行清理。
  3. 每天清理旧会话,最好是在较短的访问时间。

答案 1 :(得分:1)

onbeforeunload必须返回一个字符串,浏览器会从该字符串创建确认框。如果你想要捕获用户没有离开(如果用户离开你就无法运行任何东西,那就是它如何),只需设置一个计时器并查看它是否会触发:

window.onbeforeunload = function(){
    setTimeout(function(){
        //User didnt leave
        goDoFunStuff();
    },500);
    return 'wanna go?'
}

由于onbeforeunload阻止,定时器只有在用户没有离开时才会触发