【问题标题】:Confirmation before leaving/closing of tab?离开/关闭标签前确认?
【发布时间】:2019-06-11 06:40:20
【问题描述】:

我试图在用户关闭标签或转到另一个标签(如 facebook、gmail、GoDaddy 等)之前显示确认弹出消息。

我的代码适用于 Firefox,但不适用于 chrome、safari 等其他浏览器。

<script type="text/javascript">
      var hook = true;
      window.onbeforeunload = function() {
        if (hook) {
          return "Did you save"
        }
      }
      function unhook() {
        hook=false;
      }
    </script>

为按钮和链接调用 unhook() onClick

<a href="http://example.com" onClick="unhook()">No Block URL</a>

请帮我解决这个问题。

【问题讨论】:

标签: javascript php jquery html css


【解决方案1】:

如果您查看window.beforeunload()api,您会发现,虽然基本的卸载事件得到广泛支持,但只能在 Internet Explorer 和某些浏览器的某些版本中设置自定义消息。因此,只需使用正常的标准消息即可。

恶意网站经常利用此功能(自定义消息)以有害或恶意的方式与用户进行交互。这就是为什么许多浏览器不再支持此功能的原因,直到某个补丁消除了对用户的威胁。

标准消息解决方案:

window.addEventListener('beforeunload', function (e) {
  // Cancel the event
  e.preventDefault();
  // Chrome requires returnValue to be set
  e.returnValue = '';
});

【讨论】:

  • 能否提供一个支持所有浏览器的标准消息代码。
  • Firefox 显示字符串:“此页面要求您确认是否要离开 - 您输入的数据可能不会被保存。” Chrome 显示字符串:“您要离开此站点吗?您所做的更改可能不会保存。”
  • 仅取决于浏览器
  • 它适用于带有标准消息的 Firefox,但不适用于 chrome、safari、IE、Edge 等其他浏览器
  • 您是否阅读了我提供的链接中的示例?我将使用微软提供的代码编辑我的问题
【解决方案2】:

查看Ouibounce,它有助于检测用户何时即将离开页面(它查看光标的位置)。您可能可以构建这个库。

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2018-03-02
    相关资源
    最近更新 更多