是否可以在 beforeunload 弹出窗口中显示自定义消息?

新手上路,请多包涵

使用 window.onbeforeunload (或 $(window).on("beforeunload") )时,是否可以在该弹出窗口中显示自定义消息?

也许是适用于主流浏览器的小技巧?

通过查看现有的答案,我觉得这在过去是可能的,使用诸如 confirmalertevent.returnValue 类的东西,但现在它们似乎不起作用了。

那么,如何在 beforeunload 弹出窗口中显示自定义消息?那甚至/仍然可能吗?

原文由 Ionică Bizău 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.6k
2 个回答

tl;dr - 你不能再在大多数现代浏览器中设置自定义消息

快速说明(因为这是一个旧答案) - 现在所有主要浏览器都不支持 beforeunload 弹出窗口中的自定义消息。没有新的方法可以做到这一点。如果您仍然需要支持旧浏览器 - 您可以在下面找到信息。

为了在用户关闭窗口之前设置确认消息,您可以使用

查询

$(window).bind("beforeunload",function(event) {
    return "You have some unsaved changes";
});

Javascript

 window.onbeforeunload = function() {
    return "Leaving this page will reset the wizard";
};

请务必注意,您 不能 confirm/alert 放入 beforeunload

还有一些注意事项:

  1. 并非 所有浏览器都支持此功能(更多信息请参阅 MDN 上的 浏览器兼容性 部分) 2. 在 Firefox 中,您必须与页面进行一些真正的交互,以便向用户显示此消息。

    3. 每个浏览器都可以将自己的文本添加到您的消息中。

以下是使用我可以访问的浏览器的结果:

铬合金:

退出时的 Chrome 警报

火狐:

退出时的 Firefox 警报

苹果浏览器:

出口处的 Safar 警报

IE:

退出时 IE 警告

只是为了确保 - 你需要包含 jquery

有关浏览器支持和自定义消息删除的更多信息:

  1. Chrome 在版本 51 中 移除 了对自定义消息的支持
  2. Opera 在版本 38 中 删除 了对自定义消息的支持
  3. Firefox 在版本 44.0 中删除了对自定义消息的支持(仍在寻找此信息的来源)
  4. Safari 在 9.1 版本中 删除 了对自定义消息的支持

原文由 Dekel 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 window.onbeforeunload (或 $(window).on("beforeonload") )时,是否可以在该弹出窗口中显示自定义消息?

不再。所有主流浏览器都开始忽略实际消息并只显示它们自己的消息。

通过查看现有的答案,我觉得这在过去是可能的,例如 confirmalertevent.returnValue 了。

正确的。 很久 以前,您可以使用 confirmalert ,最近您可以从 onbeforeunload 返回一个字符串,并且将显示该字符串处理程序。现在,字符串的内容被忽略,并被视为标志。

使用 jQuery 的 on 时,您确实必须在原始事件上使用 returnValue

 $(window).on("beforeunload", function(e) {
    // Your message won't get displayed by modern browsers; the browser's built-in
    // one will be instead. But for older browsers, best to include an actual
    // message instead of just "x" or similar.
    return e.originalEvent.returnValue = "Your message here";
});

或老式的方式:

 window.onbeforeunload = function() {
    return "Your message here"; // Probably won't be shown, see note above
};

这就是你所能做的。

原文由 T.J. Crowder 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题