2010-10-15 91 views
2

HI对浏览器的卸载事件

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

<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> 
+0

需要更多的工作...有公共页面可用吗? – Ben 2010-10-15 06:32:38

回答

1

onbeforeunload必须返回一个字符串,浏览器从该字符串中创建确认框。如果你想捕捉的是,用户没有离开(您不能运行任何东西,如果用户离开,那只是它是如何),只需设置一个计时器,看看它是否火灾:

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

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

2

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

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

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