【问题标题】:window.onbeforeunload not working properly after postback/page load回发/页面加载后 window.onbeforeunload 无法正常工作
【发布时间】:2018-02-13 08:49:01
【问题描述】:

我有一个简单的功能,可以防止用户意外关闭浏览器页面(在我的情况下是在 chrome 上)提示确认消息。

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

一切正常,但我发现了一些限制:

  • 在页面加载时,如果您首先不以某种方式与页面交互,则该功能将不起作用
    例如点击 DOM 中的某处

在将数据从 DB 加载到 gridview 的经典 asp 网络应用程序(网页)中,这种行为特别烦人,因为每次加载数据时都会附加回发,并且如果您关闭选项卡,则不会出现确认消息。 (我知道您可以使用 UpdatePanels 来避免回发,但这不是我正在寻找的解决方案)

我试图在页面加载时对 DOM 的某些元素产生点击:

$('#someID').click();

但是没有用。

有什么想法吗?

【问题讨论】:

  • 嗨,到目前为止,您找到了解决此问题的任何方法吗?我也面临同样的问题。

标签: javascript c# jquery html asp.net


【解决方案1】:

根据https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

您可以并且应该通过window.addEventListener() 处理此事件 和beforeunload 事件。那里提供了更多文档。

linked 文章继续声明:

基于 WebKit 的浏览器不遵循对话框的规范。一个 几乎跨浏览器的工作示例将接近以下内容:

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  e.returnValue = confirmationMessage;     // Gecko, Trident, Chrome 34+
  return confirmationMessage;              // Gecko, WebKit, Chrome <34
});

【讨论】:

    【解决方案2】:

    尝试使用 $('#someID').focus() 而不是 $('#someID').click()。

    $(document).ready(function () {
    $('#someID').focus();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-02
      • 2019-08-03
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多