“ beforeunload”和“ unload”事件如何工作?

时间:2018-10-24 14:47:28

标签: javascript

根据我的正确理解,当用户关闭选项卡或单击链接,甚至更新页面时,“ beforeunload”然后触发“ unload”事件。首先,我无法注册事件处理程序(某些代码段不起作用):

  1. MDN web docs示例中,我写了以下内容:

    Panel

    它不起作用(我希望对话框出现)

  2. 我也尝试过:

    window.addEventListener("beforeunload", function (event) {
         event.preventDefault();
         event.returnValue("Are you sure?");
    });
    

    而且效果不佳

  3. 我从w3school docs写到:

    window.addEventListener("beforeunload", function (event) {
         return "Are you sure?";
    });
    

    就可以了!但是为什么以前的方法不起作用?

如何在浏览器或标签关闭时触发?当用户关闭标签或浏览器时是否可以“执行某些操作”?更清楚地说,我想删除一些Cookie,这些Cookie会在用户关闭标签页或浏览器时引用其当前会话。还是我需要做这样的事情?

window.onbeforeunload = function () {
     return "Are you sure?";
}

这是我编写的完整演示代码:

window._link_was_clicked = false;
window.onbeforeunload = function(event) {
  if (window._link_was_clicked) {
    return; // abort beforeunload
  }
  // your event handling
};

jQuery(document).on('click', 'a', function(event) {
  window._link_was_clicked = true;
});

1 个答案:

答案 0 :(得分:0)

即使在MDN文档中没有括号,您也已在第一个括号中添加了括号: enter image description here

如果该标签页关闭,则事件也会触发。

如果您正确设置了cookie过期时间,则可以使其自动删除。