当用户单击关闭浏览器时(但不是当用户单击刷新按钮时),JavaScript会确认启动

JavaScript confirm to fire when user clicks to close their browser (but not when they click the refresh button)

本文关键字:单击 用户 JavaScript 启动 确认 按钮 浏览器 刷新      更新时间:2024-06-03

这里已经有几个类似的问题,但没有一个能解决我在这里寻找的问题。

当用户点击浏览器上的关闭按钮时,我需要弹出一个警报,确认他们真的想关闭浏览器。这很容易写:

$(window).bind('beforeunload', function(){
    return 'Are you sure you want to close your browser?';
});

这个问题是,当你刷新浏览器、点击按钮和链接等时,它也会触发。

大多数情况都可以通过检测按键和检查按键来防止。代码如下:

  if (e.keyCode == 114 || e.keyCode == 116 || e.keyCode == 0 || e.keyCode == 17 ||(e.ctrlKey && e.keyCode == 114)){
      confirmBrowserClose = false;
  }
  $("a").bind("click", function() {
    confirmBrowserClose = false;
  });
  $("form").bind("submit", function() {
    confirmBrowserClose = false;
  });
  $("input[type=submit]").bind("click", function() {
    confirmBrowserClose = false;
  });

这些东西阻止了大部分,但有一件事不起作用,那就是刷新。当用户使用键盘(如F5)刷新时,我可以防止它触发,但我需要知道如何防止用户单击刷新按钮或在URL窗口中输入时触发我的确认警报。

我在互联网上发现的大多数东西都说要么做不到,要么他们谈论使用keyCodes和F5刷新之类的事情。我知道这是可以做到的,因为有很多网站都有这个功能。使用它的几个网站是Facebook和JSFiddle.net。在Facebook中,如果你开始键入状态更新,然后试图关闭浏览器,它会弹出一个确认消息。在JSFiddle中,如果你对你的fiddle进行了更改,然后试图关闭浏览器,它会弹出一个警告警报,如果你关闭,你的更改将丢失。

有人知道怎么做吗?

这是不可能的。如果你观察得当,即使是Facebook.com和JSFiddle.net也没有这个功能。

beforeunload是离开页面时触发的唯一事件。(通过页面刷新[f5,ctrl+r],关闭选项卡,加载另一个链接[这也导致离开当前页面,从而触发beforeunload])

相关文章: