我的页面有一个包含许多可从用户收集的信息的表单。如果用户尝试关闭此页面,则应显示一个确认框,说明:"您确定要离开此页面吗?"。
$(window).on('beforeunload',function(e){
//alert code
}
一切都好。但是当我使用搜索栏时,Firefox会忽略我的警报并重定向到搜索页面。
有什么建议吗?
答案 0 :(得分:1)
当窗口,文档及其资源即将卸载时,会触发beforeunload
事件。
将字符串分配给returnValue
Event属性时,会出现一个对话框,要求用户确认离开页面。如果未提供任何值,则会以静默方式处理事件:
window.addEventListener("beforeunload", (event) => {
event.returnValue = null;
});
// is equivalent to
window.addEventListener("beforeunload", (event) => {
event.preventDefault();
});
基于WebKit的浏览器可能不遵循对话框的规范。一个几乎跨浏览器的工作示例:
window.addEventListener("beforeunload", (event) => {
const confirmationMessage = "your message";
event.returnValue = confirmationMessage;
return confirmationMessage;
});
注意强> 当此事件返回非void值时,将提示用户确认页面卸载。在大多数浏览器中,事件的返回值显示在此对话框中。在Firefox 4及更高版本中,返回的字符串不会显示给用户。相反,Firefox会显示它自己的预定义字符串。
自2011年起,HTML5规范声明在此次活动期间可能会忽略对window.alert()
,window.confirm()
和window.prompt()
方法的调用。
另请注意,各种移动浏览器会忽略事件的结果(即,他们不会要求用户进行确认)。 Firefox在about:config
中有一个隐藏的首选项来执行相同操作。实质上,这意味着用户始终确认可以卸载文档。
答案 1 :(得分:0)
您可以编写类似这样的代码
FormBuilder
您无法在beforeunload方法中生成自定义弹出窗口。