作为一项安全措施,Firefox 不再允许页面为beforeunload
对话框设置自定义消息。因此,该return
语句在使用时没有任何效果addEventListener
(您应该这样做)。
要阻止页面卸载,您需要preventDefault()
像这样使用:
window.addEventListener ('beforeunload', confirmClose, false);
function confirmClose (zEvent) {
zEvent.preventDefault ();
}
这将抛出不可更改的对话框:
如果要显示自定义消息,可以使用额外的对话框来实现,如下所示:
window.addEventListener ('beforeunload', confirmClose, false);
function confirmClose (zEvent) {
var doQuitPage = confirm (
"You have a long message typed. Are you sure you want to close?"
);
if ( ! doQuitPage) {
zEvent.preventDefault ();
}
}
但请注意两个重要的烦恼:
如果用户按下OK,则页面将退出而不再混乱。
但是,如果用户按下Cancel,则会弹出Are you sureStay on Page对话框,用户仍然必须按下。
根据 HTML5 规范,未来版本的 Firefox 可能会在事件期间停止允许。confirm()
beforeunload