【问题标题】:disable event onbeforeunload for 1 event button only仅针对 1 个事件按钮禁用事件 onbeforeunload
【发布时间】:2018-04-20 07:46:21
【问题描述】:

我使用 JavaScript 函数 beforeunload 在加载应用程序期间显示模式。 我的母版页中的代码:

<script>
        window.addEventListener("beforeunload", function (e) {
            var modal = document.createElement("div");
            modal.className = "modal-backdrop fade in"
            modal.innerHTML = '&nbsp;';
            var loader = document.createElement("div");
            loader.className = "loader"
            loader.innerHTML = '<i class="glyphicon glyphicon-hourglass"></i><br/><br/>Veuillez patienter...<br/>';
            document.body.appendChild(modal);
            document.body.appendChild(loader);
            return null;
        });
    </script>

除了生成excel文件的按钮事件外,它运行良好。未检测到加载结束,因此模态不会关闭。

有关信息,我给出了按钮事件的 c# 代码的结尾:

            Response.Write(style);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();

我尝试在我的按钮事件中调用此函数,但它不起作用:

function stopNavigate() {

        window.onbeforeunload = null;

    }

如何只禁用此按钮的 beforeunload?

【问题讨论】:

  • 当用户选择关闭标签/窗口时,为什么要添加沙漏?
  • 我在浏览器加载时添加沙漏,而不是在用户选择关闭窗口时添加一个沙漏
  • ???...beforeunload 在关闭时触发,而不是加载,因此您的问题毫无意义。

标签: javascript c# asp.net webforms onbeforeunload


【解决方案1】:

把监听函数变成一个独立的函数,可以在别处引用,所以它不是匿名的。然后,您可以稍后使用removeEventListener 将其删除。 (将null 分配给on* 属性只会删除使用相同on* 属性附加的侦听器)

function unloadHandler (e) {
  var modal = document.createElement("div");
  modal.className = "modal-backdrop fade in"
  modal.innerHTML = '&nbsp;';
  var loader = document.createElement("div");
  loader.className = "loader"
  loader.innerHTML = '<i class="glyphicon glyphicon-hourglass"></i><br/><br/>Veuillez patienter...<br/>';
  document.body.appendChild(modal);
  document.body.appendChild(loader);
  return null;
}

window.addEventListener("beforeunload", unloadHandler);

// ...

function stopNavigate() {
  window.removeEventListener('beforeunload', unloadHandler);
}

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 2016-03-20
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多