在回发/页面加载后window.onbeforeunload无法正常工作

时间:2018-02-13 08:49:01

标签: javascript c# jquery html asp.net

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

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

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

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

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

我试图在页面加载时生成点击DOM的某个元素:

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

但没有奏效。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

根据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
});

答案 1 :(得分:0)

尝试使用$('#someID')。focus()代替$('#someID')。click()。

$(document).ready(function () {
$('#someID').focus();
});
相关问题