ページがリロード/リダイレクトされるたびに実行されるonbeforeunloadイベントハンドラーがページにアタッチされています。
window.onbeforeunload = function() {
console.log("do something");}
テスト中にこのスクリプトを実行したくありません。自分のテスト環境で無効にしたい。
このonbeforeunloadイベントのバインドを解除する方法はありますか?私はJavaScriptを使用しており、フレームワークとしてjQueryを使用しているので、jQueryでの回答が良いでしょう。
Javascriptでは関数を上書きできます。あなたは単にそれに新しい目的を割り当てることができます:
window.onbeforeunload = function () {
// blank function do nothing
}
これにより、既存のバージョンのwindow.onbeforeunload
が完全に上書きされます。
注:そもそもこの関数を設定するコード行を単純に削除してみませんか?または、できない場合は、定義後にこの空白の関数を設定して、再度オーバーライドされないようにする必要があります。
この質問にすぐには関係ありませんが、それでも誰かを助けるかもしれません。これは私がAngular 1.xとTypeScriptで使用しているものです:
this.$window.onbeforeunload = () => undefined;
たす:
function f_beforeunload(e) {console.log("do something");}
window.addEventListener("beforeunload", f_beforeunload);
削除する:
window.removeEventListener("beforeunload", f_beforeunload);
jQuery≥1.7
JQuery 1.7以降では、イベントAPIが更新され、下位互換性のために.bind()/。unbind()を引き続き使用できますが、推奨される方法はon()/ off()関数を使用することです。以下は、
$('#myimage').click(function() { return false; }); // Adds another click event
$('#myimage').off('click');
$('#myimage').on('click.mynamespace', function() { /* Do stuff */ });
$('#myimage').off('click.mynamespace');