セキュリティ対策として、 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 ();
}
}
ただし、2 つの重要な煩わしさに注意してください。
ユーザーが を押すOKと、ページは何もせずに終了します。
ただし、ユーザーが を押すCancelと、Are you sureダイアログがポップアップし、ユーザーは引き続き を押す必要がありStay on Pageます。
HTML5 仕様により、Firefox の将来のバージョンでは、イベントconfirm()
中の許可が停止される可能性がありbeforeunload
ます。