onunload的警报错误“NS_ERROR_NOT_AVAILABLE”(OnUnload Ale

2019-09-02 19:18发布

<html>
<body>

<button type="button" onclick="clickme()">Click Me</button>

<script>
var test = 0;

function clickme() {
  test = 1;
  console.log(test);
}

window.onunload = function() {
  alert("test");
}
</script>

</body>
</html>

我使用这个简单的代码来测试一些事情onunload的和onbeforeunload。 出于某种原因,每当我刷新/离开页面,并导致onunload事件我没有得到任何预警和Firebug控制台错误。 如果我使用onbeforeunload这个作品,我没有错误,但我听说onbeforeunload不是很好的跨浏览器。

NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111     
(NS_ERROR_NOT_AVAILABLE) [nsIDOMWindow.alert]

alert("test");

我不是想提醒测试变量,只是文本“测试”之前有人试图指出这一点。

Answer 1:

如果你想要的工作,它必须在onbeforeunload事件,而不是创建一个警报/确认弹出,onbeforeunload事件有一个内置的弹出窗口。 所有你需要做的是返回一个字符串,并弹出当用户试图导航离开该页面将会出现。 如果没有返回变量,就没有弹出。

  • 这个伟大的事情是,在弹出的消息有2个按钮:确定和取消。
  • 如果用户点击OK,浏览器将继续从该页面导航离去
  • 如果用户点击取消,浏览器将取消卸载并会留在当前页面
  • onbeforeunload事件是唯一的弹出窗口,可以取消onunload事件

下面是一个例子:

<script type="text/javascript">

window.onbeforeunload=before;
window.onunload=after;

function before(evt)
{
   return "This will appear in the dialog box along with some other default text";
   //If the return statement was not here, other code could be executed silently (with no pop-up)
}

function after(evt)
{
   //This event fires too fast for the application to execute before the browser unloads
}

</script>

好像你正在尝试做的onunload事件警报。 这里的问题是,它是为时已晚。 该页面已经开始卸载并没有阻止它。 您可能能够得到一个警告消息显示,但它并不重要用户点击什么,因为页已经被卸载。

最好的办法是去与onbeforeunload事件。



文章来源: OnUnload Alert Error “NS_ERROR_NOT_AVAILABLE”