【发布时间】:2016-04-05 10:08:43
【问题描述】:
我想在重新加载页面时使用即兴警报框作为确认框。 现在我正在使用这个普通的javascript。
window.onbeforeunload = function(event) {
return confirm("Confirm refresh");
};
但是我不想再用这个了,有没有机会在页面重新加载时加载即兴确认框?
提前致谢
【问题讨论】:
标签: javascript jquery impromptu
我想在重新加载页面时使用即兴警报框作为确认框。 现在我正在使用这个普通的javascript。
window.onbeforeunload = function(event) {
return confirm("Confirm refresh");
};
但是我不想再用这个了,有没有机会在页面重新加载时加载即兴确认框?
提前致谢
【问题讨论】:
标签: javascript jquery impromptu
简短回答:不。
长答案: Javascript 无法等待卸载时(或之前)的回调。如果事件返回,页面将被卸载。考虑到这一点,自定义确认框将始终需要等待用户交互,这不能被阻止。因此 Impromptu(或任何其他插件)将无法阻止页面卸载。原生函数(如警报、确认甚至 XMLHttpRequest...)有一种例外情况,它们是或可能是阻塞的,因此它们可以在 pageunload 上执行。
The Mozilla docs 告诉我们现代浏览器甚至阻止在window.onbeforeunload 中创建对话框。如果我在 chrome 中测试你的函数,它会创建一个对话框:
确认导航
假
您确定要离开此页面吗?
你能做的最好的事情是:
window.onbeforeunload = function() {
return "There is more to see on this site!";
};
这将创建一个像这样的盒子:
确认导航
在这个网站上可以看到更多内容!
您确定要离开此页面吗?
您可以在页面重新加载时执行某些操作的唯一方法是在页面重新加载之后,即在新请求的页面上。
注意:我非常不鼓励使用 onbeforeunload 事件,这会给您的用户带来额外的弹出窗口,他们必须在关闭页面之前单击该弹出窗口。当网站对我这样做时,我真的不喜欢它,感觉就像垃圾邮件。
【讨论】: