jQuery onbeforeunload
はChromeおよびFirefoxでは機能しません。IEおよびSafariでは正しく機能します。
jQuery(window).bind('onbeforeunload' ,function () {
mymethod();
});
上記のコードは、IEおよびSafariでは正常に機能しますが、FirefoxおよびChromeでは機能しません。
MDNの window.onbeforeunload リファレンスによると、
関数は、EventオブジェクトのreturnValueプロパティに文字列値を割り当て、同じ文字列を返す必要があります。
jQuery(window).bind('beforeunload', function(e) {
var message = "Why are you leaving?";
e.returnValue = message;
return message;
});
特定のイベントは無視される場合があることに注意してください:
[...] HTML5仕様には、window.showModalDialog()、window.alert()、window.confirm()、およびwindowの呼び出しが記載されています.Prompt()メソッドは、このイベント中は無視されます。
AJAXに関する重要な注意:
AJAXを呼び出す場合、ユーザーがリクエストを離れるときに、リクエストが完了する前にキャンセル(中断)される場合があります。async
オプションをオフにして、これを回避する方法。例:
$.ajax({
url: "/",
type: "GET",
async: false
});
2017年更新:
多くのブラウザーは、ユーザーが離れるときにアラートダイアログでカスタムテキストをサポートしなくなりました。
Chrome、Firefox、OperaおよびSafariの最新バージョンでは、カスタムテキストは表示されません。
EdgeとIEはまだこれをサポートしています。