在关闭浏览器之前Javascript警告不按预期工作

我尝试了基于大量示例的解决方案,并且只有在首先点击其他内容的情况下,该事件才有效。 一个链接首先在同一页面上右键单击。 然后,如果我点击浏览器关闭按钮,它会在按照预期结束之前提示警告。

否则,如果我第一次进入页面或刷新页面并单击关闭按钮,它不起作用,页面关闭。 onbeforeunload函数中的代码每次都会触发,但在最后一种情况下显然不起作用。

$("button, a").bind("click", function () {
  window.onbeforeunload = null;
});

window.onbeforeunload = function (e) {
  e = e || window.event;

  // For IE and Firefox prior to version 4
  if (e) {
    e.returnValue = 'Sure?';
  }

  // For Safari
  return 'Sure?'; // the code hits each time - normally it does have no effect but if right-clicked a link on the page first it does work?
};

它看起来很奇怪的行为。 任何人都知道为什么只有在页面上发生另一个事件时才起作用。

尝试在Firefox和Chrome。


这是一个功能。 根据MDN:

为了防止不需要的弹出窗口,有些浏览器不会显示在beforeunload事件处理程序中创建的提示,除非页面已与之交互; 有些根本不显示它们。

什么是你需要onbeforeunload弹出窗口,即使没有用户交互显示的用例? 例如,这些通常用于防止未提交表单上的数据丢失。 如果用户想要离开该页面并且没有任何理由显示该弹出窗口,则不应该尝试这样做。

链接地址: http://www.djcxy.com/p/74155.html

上一篇: Javascript warning before closing browser not working as expected

下一篇: Calling Array.reduce on an array with a single element in Javascript