事件在页面卸载之前被调用

15

我希望在 html 页面被卸载之前弹出一个对话框,询问是否要卸载页面。如果选择“是”,则继续卸载,如果选择“否”,则取消卸载事件。

1个回答

27

你不能将文本设置为"yes"/"no"(在大多数浏览器中会显示"Ok"/"Cancel"),但是你可以使用window.onbeforeunload来提示(使用时要小心),当以任何方式离开页面时,像这样:

window.onbeforeunload = function() {
  return "Are you sure you wish to leave the page?";
}

只有在有很好的理由时才使用此功能,不要让用户感到烦恼。 话虽如此,当离开页面时(包括历史记录后退、前进、刷新、关闭窗口/选项卡、点击链接导航或提交表单等情况)会提示,因此在去往不应提示的地方时可能需要调用此功能:

window.onbeforeunload = null;
例如,提交信息表单时,您希望在离开或丢失数据时提示,但在实际提交时不提示。

@suraj:举个例子,开始在下面输入答案,然后尝试离开页面。 :-) StackOverflow正是Nick所描述的那样。 - T.J. Crowder
1
所以当你去某个不应该提示的地方时,你可能想要调用这个函数...或者在函数中使用标志或检查,而不是将其断开连接。如果函数没有返回一个字符串,它就不会提示用户。 - T.J. Crowder
1
@TJCrowder - 我记不清具体是什么问题了,但之前遇到过这种情况,解除绑定通常是安全的选择。如果今天我想起来了,我会回来更新的。不过我记得这只是个罕见的边缘案例,可能只在1或2个浏览器中出现(因为各个浏览器都有安全或烦人的代码限制哪些函数允许使用)。 - Nick Craver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接