0

我想在重新加载页面时使用即兴警报框作为确认框。现在我正在使用这个普通的javascript。

window.onbeforeunload = function(event) {
    return confirm("Confirm refresh");
};

但是我不再想使用它,所以有没有机会在页面重新加载时加载即兴确认框?

提前致谢

4

1 回答 1

0

简短的回答:没有。

长答案:Javascript 无法等待卸载时(或之前)的回调。如果事件返​​回,页面将被卸载。考虑到这一点,自定义确认框将始终需要等待用户交互,这不能被阻止。因此 Impromptu(或任何其他插件)将无法阻止页面卸载。原生函数(如警报、确认甚至 XMLHttpRequest ......)有一种例外,它们是或可能是阻塞的,因此它们可以在 pageunload 上执行。

Mozilla 文档告诉我们,现代浏览器甚至会阻止在window.onbeforeunload. 如果我在 chrome 中测试你的函数,它会创建一个对话框:

确认导航

错误的

您确定要离开此页面吗?

你能做的最好的事情是:

window.onbeforeunload = function() {
    return "There is more to see on this site!";
};

这将创建一个框,如:

确认导航

在这个网站上还有更多可看的!

您确定要离开此页面吗?

您可以在页面重新加载时执行某些操作的唯一方法是在页面重新加载之后,即在新请求的页面上。

注意:我非常不鼓励使用 onbeforeunload 事件,这会给您的用户带来额外的弹出窗口,他们必须在关闭页面之前单击该弹出窗口。当网站对我这样做时,我真的不喜欢它,感觉就像垃圾邮件。

于 2016-04-05T13:06:47.810 回答