繁体   English   中英

为什么浏览器刷新和关闭事件检测不适用于IE和Safari

[英]Why browser refresh and close event detection is not working for IE and Safari

我需要在浏览器窗口关闭时调用logout function来关闭。 Chrome在IE和Safari中无法正常运行。

我尝试了以下代码:

window.onbeforeunload = function (e) {
    // Your logic to prepare for 'Stay on this Page' goes here
    var evtobj = window.event ? event : e;
    if (evtobj == e) {
        //firefox
        if (!evtobj.clientY) {
           //server call
        }
    }
    else {
        //IE
        if (evtobj.clientY < 0) {
           //server call
        }
    }
    //return "Please click 'Stay on this Page' and we will give you candy";
};

我尝试了其他几种方法,但是它们没有用。 请指教。

您的设计有问题,您不应依赖客户端挂钩执行注销。 有十亿个原因导致该事件无法执行。 只需限制onbeforeunload事件即可执行信息内容,而不是执行关键操作。

顺便说说:

  • 不要返回您的beforeunload事件! 这在IE中造成一些问题
  • 使用window.sessionStorage使一些数据持续到用户关闭选项卡
  • 使用会话cookie来存储用户的敏感数据(如令牌),并检查用户是否登录在服务器上,而不是在客户端上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM