-1

可能重复:
有没有办法在 javascript 中捕获后退按钮事件?

在我的应用程序中,我只希望一定数量的脚本(Text1.php、Text2.php 和 Text3.php)包含一段代码,如果用户单击后退浏览器按钮,它将显示一个确认框,如以下之一:

confirm("You have clicked on the browser's back button. If you confirm to go back via the browser back button, you will be logged out and lose your current assessment details." + "\n" + "\n" + "Are you sure you want to go back and lose current assessment details?" + "\n" );

要求如下:

  1. 如果用户单击后退浏览器按钮,如何显示确认?
  2. 如果用户确认确认然后导航到 Text4.php (这是它注销用户的地方)
  3. 如果用户取消确认,则只需关闭确认框,以便用户可以继续他们正在做的事情(猜测这与return false;
  4. 只希望脚本(Text1.php、Text2.php 和 Text3.php)发生这种情况
  5. 需要它在所有主流浏览器(IE、Chrome、Firefox、Safari、Opera)上工作

谢谢

4

2 回答 2

6

注意:仅当您需要阻止此人离开时才应执行此操作(即,如果他们输入了一些重要数据并且会因导航而丢失)。另请注意,您无法在更新的浏览器中自定义确认弹出窗口。(旧浏览器允许自定义确认消息正文。)这些是此类功能的限制。

您可以使用beforeunload事件来实现这一点。在旧版浏览器中,您可以为确认提示返回自定义字符串:

$(window).bind("beforeunload", function() {
    return "HI"; // This will be shown in the confirmation popup in older browsers.
});​

但是,正如@formicini在评论中提到的,更新的浏览器(例如 Chrome 87)不允许自定义字符串。返回任何非undefined值都会显示确认提示,但只会显示浏览器的通用消息——即使它是一个字符串。

$(window).bind("beforeunload", function() {
    return true; // Any non-undefined value will show generic confirmation popup.
});​

我还建议您在有人以所需方式(取消按钮?)离开页面时取消绑定,否则您可能会遇到不良行为。

例如:

$("a").click(function() {
    $(window).unbind("beforeunload");
});
于 2012-11-07T04:42:49.833 回答
1

不能因为浏览器安全限制,但您可以判断用户是否离开页面。

您可以通过此功能检测用户离开页面

window.onbeforeunload = function (e) {
  var message = 'Are you sure ?';
  if (typeof e == 'undefined') {
    e = window.event;
  }
  if (e) {
    e.returnValue = message;
  }
  return message;
}
于 2012-11-07T04:43:32.650 回答