【问题标题】:how to disable onbeforeunload when a condition becomes true?当条件为真时如何禁用onbeforeunload?
【发布时间】:2016-09-21 20:26:14
【问题描述】:

我有一个测试页面,用户可以在指定的时间内回答它。

对于时间限制,我使用了 javascript 倒数计时器。直到时间没有结束,用户不能关闭窗口。

为此,我使用onbeforeunload 窗口事件来防止像这样关闭窗口:

<script language="JavaScript">
    window.onbeforeunload = confirmExit;
    function confirmExit() {
        return "You have attempted to leave this page. Are you sure?";
    }
</script>

另一方面,在倒数计时器中,我设置了一个timeUp 函数,在完成时间后将用户重定向到结果页面。

在这种情况下,因为在onbeforeunload 上方触发,重定向失败并且上面的消息显示给用户。

有什么方法可以在条件变为真时禁用onbeforeunload 事件?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    使用 beforeunload 事件处理程序调用 unbind

     $(window).unbind('beforeunload');
    

    或者试试试试

     window.onbeforeunload = null;`
    

    【讨论】:

      【解决方案2】:

      如果onbeforeunload 函数不返回任何内容 - 浏览器将不会显示任何消息。

      既然您说您使用计时器功能来检查是否应该向用户显示消息。

      var displayMessage = true;
      setTimeout(function() {
          displayMessage = false;
      }, 10000);
      
      function confirmExit() {
          if (displayMessage) {
              return "You have attempted to leave this page. Are you sure?";
          }
      }
      window.onbeforeunload = confirmExit;
      

      在上面的代码中 - 10 秒后 displayMessage 的值为 false,如果用户在 10 秒后尝试刷新/退出页面,浏览器将不会显示该消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-26
        相关资源
        最近更新 更多