私はこれらのうちのどれを使用すべきかを試しています:beforeunload
またはonbeforeunload
どちらも非常に似たようなことをしているようですが、ブラウザの互換性は異なります。beforeloadまたはonbeforeunload
いくつかの文脈:
私はフォームを持っています。ページの読み込みでは、フォームをシリアライズして変数に保存します。ユーザーがページを離れると、私はフォームをシリアライズし、2つを比較して、変更があったかどうかを確認します。ただし、フォームが提出された場合、イベントは発生しません。
例1
予想通り、私はこの作業を持っています。私はちょうど2つの違いを理解していない:
window.onbeforeunload = function(e) {
if(strOnloadForm != strUnloadForm)
return "You have unsaved changes.";
}
この行を使用すると、(.submit()
に結合している)、フォームを保存するときに発射それを停止する
window.onbeforeunload = null;
例2
window.addEventListener("beforeunload", function(event) {
if(strOnloadForm != strUnloadForm)
event.returnValue = "You have unsaved changes.";
});
フォームを保存するときにこの行を停止するには(.submit()
にバインド)
を言う
window.removeEventListener("beforeunload");
。 はonbeforeunload
セクションNotes下では述べている:
あなたできとwindow.addEventListener()を通じて、このイベントとbeforeunloadイベントを処理する必要があります。そこにはさらに多くのドキュメントがあります。私は後者を使用すべきだと思います1
。しかしremoveEventHandlerのドキュメントは、この氏は述べています:
addEventListener()
とremoveEventListener()
古いブラウザには存在しません。スクリプトの先頭に次のコードを挿入して、これをネイティブにサポートしていない実装でaddEventListener()
とremoveEventListener()
の使用を許可することで、この問題を回避できます。 2
は、誰かがしてくださいこれらのための違い、および使用するための最良のものにいくつかの光を当てるていただけますか?https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#Polyfill_to_support_older_browsers
が、addEventListenerをを使用しているときは、常に「オン」の部分のまま:
あなたは、一般的に、コードのように表示されます。 – adeneo
実際には同じイベントを発生させるのとはちょうど異なる方法だと思います。 –