0

我需要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";
};

我尝试了其他一些方法,但没有奏效。请指教。

4

1 回答 1

1

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

顺便一提:

  • 不要在您的beforeunload活动中返回!这在 IE 中产生了一些问题
  • 用于window.sessionStorage使某些数据持续到用户关闭选项卡
  • 使用会话 cookie 将用户的敏感数据存储为令牌,并检查用户是否登录到服务器而不是客户端
于 2019-02-21T09:28:53.527 回答