【问题标题】:Show confim popup on page unload [DUPLICATED]在页面卸载时显示确认弹出窗口 [重复]
【发布时间】:2018-07-18 09:33:14
【问题描述】:

最近我正在开发一个项目功能,当用户决定关闭或刷新页面时会显示一个确认框。

我已经这样做了:

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

但它不适用于 ios chrome/safari 浏览器,并且仅检测到 chrome android 浏览器上的刷新。

我做了一些研究,我在 MDN 网络文档上找到了这个

为了防止不需要的弹出窗口,某些浏览器不显示提示 在 beforeunload 事件处理程序中创建,除非页面已经 互动;有些根本不显示它们。对于列表 特定浏览器,请参阅 Browser_compatibility 部分。

请任何人知道如何处理这个问题。 谢谢。

更新: 经过进一步研究,我发现我的问题已经在这里得到解答 How to make a cross-browser on-window-unload request?

【问题讨论】:

  • 你为什么要这样做?这是一种不好的做法
  • 这不是我的选择,这是客户的要求
  • @executable:并非总是如此。例如。当您在编辑某些内容时不小心关闭了浏览器窗口。
  • 不,这不是 2013 年发布的帖子,自那以后浏览器规范发生了变化

标签: javascript jquery


【解决方案1】:

代表@denys séguert:

简短的回答是你不能。

onbeforeunload 事件最初由 Microsoft 引入,以允许标准确认对话框。现在大多数浏览器都以原始形式支持它,并且在大多数情况下,允许执行一个简短的、非交互式的函数(例如,您可以在 localStorage 中记录您的状态)。但是,正如跨浏览器 jQuery API 中所述,这是不可靠的:

卸载事件的确切处理因版本而异 浏览器的版本。例如,某些版本的 Firefox 触发 跟随链接时的事件,但不是在关闭窗口时。在 实际使用,应在所有支持的浏览器上测试行为, 并与专有的 beforeunload 事件形成对比。

由于当用户要求结束页面(以及脚本)时,与执行任务相关的许多潜在安全问题,这可能是不可靠的,直到(并且如果)进行严格的规范化工作以精确在 onbeforeunload 回调中究竟可以做什么。

对于可预见的未来,建议不要依赖 onbeforeunload 而是使用其他方案,例如持续后台保存或大的“保存”按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2012-02-20
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    相关资源
    最近更新 更多