さて、最も簡単なことは、ページスクリプトを直接オーバーライドし、イベントをに再割り当てすることnull
です。
window.onbeforeunload = null;
本当に悪意のない限り、これはどこでも機能し、自分自身で再割り当てを続けます。このような場合、設定を維持するループnull
がおそらく機能します。
while(true) {
if (window.onbeforeunload != null) {
window.onbeforeunload = null;
}
}
今、警告されます、いくつかのページはこれを永久に使用します。YouTubeアップロードページをご覧ください:アップロード中に別の場所に移動すると、何時間も進歩しなくなった可能性があります。または、入力し直したくないWebフォーム、または再入力したくないメッセージ(フォーラム/メール)を入力します。この機能により、保護されます。
もう1つの問題は、AJAXによるデータの保存など、何らかの二次的な目的でこれを使用するページです。彼らはこのイベントを使用して保存アクションをトリガーし、ユーザーがボタンをクリックしてリクエストが通過するのに十分な時間がかかることを望んでいます。繰り返しますが、これは自分自身からあなたを救うためによく行われます。
しかし、明らかに、多くのページがこれを病気に使用していることを知っています。したがって、作業するページを知っている場合は、常にホワイトリストシステムを使用できます。本当に完全にブロックせずに、このアクションをブロックする方法はありません。また、window.onbeforeunload
実行される可能性のある(おそらく良い)アクションもありません。
ポップアップボックスを停止している間、適切なアクションを維持する方法はありません(特定のページコードの予備知識がなければ)。このボックスはありませんalert()
。ボックスは、の意図された動作として、ブラウザによって生成されますonbeforeunload
。window.onbeforeunload
文字列を返すために割り当てる関数を作成することで作成します。その文字列はポップアップに出力されます。
window.onbeforeunload = function() {
//Whatever
return "WARNING! You have unsaved changes that may be lost!";
}
したがって、関数を消去せずにポップアップをブロックすることはできません。
さらに、方法を見つけた場合、AJAXはすべて失敗します。ポップアップはリクエストを通過する時間を提供します。ポップアップなしでは、データが失われる可能性があります。
についてはonunload
、これであなたをブロックすることはできません。ページがアンロードされた後に起動するため。しかし、安全にするために、あなたはいつでもすることができます、window.onunload = null;
そして、それは世話をされるべきです。