【问题标题】:onbeforeunload in javascriptjavascript中的onbeforeunload
【发布时间】:2012-11-02 13:25:36
【问题描述】:

在我的应用程序中,我需要在 onbeforeunload() 中调用注销函数,所以我做了如下代码。

window.onbeforunload = function(){
bodyWidth = window.document.body.offsetWidth;
bodyHeight = window.document.body.offsetHeight
mouseX = window.event.clientX;
mouseY = window.event.clientY;
    if((mouseX<0) || (mouseY<0) || (mouseX > bodyWidth)  || (mouseY > bodyHeight)){
        logout();
    }
}

当我在 IE 中按下 (X) 按钮关闭窗口时,它工作正常。

但是如果我通过按 ATL+F4 关闭 IE 窗口,这不起作用。在执行logout() 函数之前,浏览器会关闭。

谁能帮我正确使用window.onbeforunload

我什至尝试了以下功能,但它不起作用

logout=true;
window.onbeforeunload = bfunload;
window.onunload = unloadPage;
function bfunload(){
bodyWidth = window.document.body.offsetWidth;
bodyHeight = window.document.body.offsetHeight
mouseX = window.event.clientX;
mouseY = window.event.clientY;
    if((mouseX<0) || (mouseY<0) || (mouseX > bodyWidth)  || (mouseY > bodyHeight)){
        logout=false;
        logout();
    }
}
function bfunload(){
if(logout){
    logout();
}

}

【问题讨论】:

  • 以后不要将问题的每一行都加粗。它无法帮助您获得答案。
  • 这是您正在开发的高安全性网站吗?请不要将 JavaScript 用作用户系统引擎。它很容易在任何浏览器上被禁用,这使得它对于用户日志记录非常有缺陷。

标签: javascript internet-explorer javascript-events event-handling


【解决方案1】:

不可能知道关闭窗口的所有操作。如果用户在他们的桌面上踢线,代码将永远不会运行。飓风来袭,切断了电源。如果他们失去了互联网连接。如果他们通过地址栏/书签离开。

处理结束会话的唯一方法是服务器上的会话超时。

【讨论】:

    【解决方案2】:

    JavaScript window.onbeforeunload() 事件在网页卸载前触发。 这使我们能够确保用户确定要离开他们正在查看的页面。

    通过按Alt+F4,操作系统会直接关闭浏览器应用程序。如果没有打开任何窗口,它将弹出关闭对话框。

    执行Logout Functionality 的首选方法是在您的应用程序中使用Sessions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2021-09-02
      相关资源
      最近更新 更多