window.onbeforeunload
(または$(window).on("beforeonload")
)を使用する場合、そのポップアップにカスタムメッセージを表示できますか?
おそらく、主要なブラウザーで動作する小さなトリックですか?
既存の回答を見ると、過去にconfirm
またはalert
またはevent.returnValue
などを使用してこれが可能であったと感じていますが、現在はもう機能していないようです。
それでは、beforeunloadポップアップにカスタムメッセージを表示する方法は?それは可能ですか?
ユーザーがウィンドウを閉じる前に確認メッセージを設定するには、使用できます
jQuery
$(window).bind("beforeunload",function(event) {
return "You have some unsaved changes";
});
Javascript
window.onbeforeunload = function() {
return "Leaving this page will reset the wizard";
};
あなたができないputconfirm/alert
insidebeforeunload
さらにいくつかのメモ:
- NOTすべてのブラウザがこれをサポートしています(詳細は ブラウザの互換性 MDNのセクション)
- Firefoxでは、このメッセージをユーザーに表示するために、ページで実際の操作を行う必要があります。
- 各ブラウザは、メッセージに独自のテキストを追加できます。
アクセスできるブラウザを使用した結果は次のとおりです。
Chrome:
Firefox:
サファリ:
IE:
念のため-jqueryを含める必要があります
ブラウザのサポートとカスタムメッセージの削除に関する詳細情報:
window.onbeforeunload
(または$(window).on("beforeonload")
)を使用する場合、そのポップアップにカスタムメッセージを表示できますか?
もう違います。すべての主要なブラウザは、実際のメッセージを無視して、独自のメッセージを表示し始めています。
既存の回答を見ると、過去に
confirm
またはalert
またはevent.returnValue
などを使用してこれが可能であったと感じていますが、現在はもう機能していないようです。
正しい。 long時間前には、confirm
またはalert
を使用できました。最近では、onbeforeunload
ハンドラーから文字列を返すことができ、その文字列が表示されます。現在、文字列の内容は無視され、フラグとして扱われます。
JQueryのon
を使用する場合、元のイベントでreturnValue
を使用する必要があります。
$(window).on("beforeunload", function(e) {
// Your message won't get displayed by modern browsers; the browser's built-in
// one will be instead. But for older browsers, best to include an actual
// message instead of just "x" or similar.
return e.originalEvent.returnValue = "Your message here";
});
または昔ながらの方法:
window.onbeforeunload = function() {
return "Your message here"; // Probably won't be shown, see note above
};
それがあなたにできることのすべてです。
バックグラウンドでメッセージを表示するdivを表示させました。モーダルの背後にありますが、これは何よりも優れています。それはちょっと怪しいですが、少なくともあなたがユーザーに出ないように気にする理由についての情報を与えることができます。
constructor($elem)
{
$(window).unbind().bind('beforeunload', (e) => this.beforeUnload(e));
}
beforeUnload(e)
{
$('#leaveWarning').show();
setTimeout(function(){
$('#leaveWarning').hide();
}, 1); // set this to 1ms .. since timers are stopped for this modal,
// the message will disappear right after the user clicked one of the options
return "This message is not relevant in most modern browsers.";
}
動作するFiddle https://jsfiddle.net/sy3fda05/2/