Javascript 浏览器的卸载事件

Javascript 浏览器的卸载事件,javascript,Javascript,嗨 我想从客户端页面超时会话,我尝试了下面的代码,但无法执行代码需要一些帮助,我可以如何处理OK或CANCEL事件从用户 <script> function onBeforeUnloadAction(){ return "Would u like to discard Changes"; } window.onbeforeunload = function(){ if((window.event.clientX<0) || (window

我想从客户端页面超时会话,我尝试了下面的代码,但无法执行代码需要一些帮助,我可以如何处理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>

函数onBeforeUnloadAction(){
返回“是否要放弃更改”;
}
window.onbeforeunload=函数(){

如果((window.event.clientX
onbeforeunload
必须返回字符串,浏览器将从该字符串创建确认框。如果您想捕获用户没有离开(如果用户离开,您无法运行任何操作,这就是它的方式),只需设置计时器并查看是否触发:

window.onbeforeunload = function(){
    setTimeout(function(){
        //User didnt leave
        goDoFunStuff();
    },500);
    return 'wanna go?'
}
由于
onbeforeunload
被阻塞,只有当用户没有离开时计时器才会启动只能用于向用户显示一个对话框,用户将要离开当前页面。此对话框由浏览器控制,您只能自定义对话框的警告,而不能自定义其结果。因此,您无法执行基于对话框结果的操作。这主要是出于安全原因,以防止人们被迫停留在当前页面上

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

  • 在页面上输入您自己的“后退”或“取消”按钮,您可以处理该按钮以显示您自己的对话框并执行清理
  • 记录每个会话的服务器请求,并对在特定间隔内未发出任何请求的会话执行清理
  • 每天清理旧会话,最好在访问时间较短的情况下进行

  • 需要更多的工作…有公共页面吗?