Onbeforeunloadとonunloadの違いは何ですか?また、iPadでの使用に関連する特定の質問があります...ページ(myPage.html)があり、ページを閉じたときに警告を表示しようとしています(iPadでXを押してタブを閉じます)。
今私はwindow.onunloadとwindow.onbeforeunloadの両方を使用してみました以下はiPadでの私の発見です。
Window.onunloadを使用すると、ユーザーがmyPage.htmlから別のページに移動したときに(リンクをクリックするか、myPage.htmlでGoogle検索を実行して)アラートを受け取ることができます。ただし、最小化されたビュー(X)からタブを閉じると何も起こりません
Window.onbeforeunloadを使用すると、ユーザーがmyPage.html OR=最小化されたビューからタブ(X)を閉じた場合)から別のページに移動しても、アラートは表示されません。
この問題を修正する別の方法があるかどうか知りたいですか?
ありがとうございました。
onunload
は、ページが閉じられたときに命令を実行する責任があります。また、IEおよびAJAXで問題が発生します。
onbeforeunload
は、ウィンドウの実際のクローズと競合せずに実行され、onunload
の前にトリガーされるため、より効率的です。
私は知っていますOpera以前は確認応答しなかったonbeforeunload
-彼らがそれを修正したかどうかはわかりませんが、両方が安全であるために常にリスナーを登録します:
window.onunload = window.onbeforeunload = (function(){...
AlienWebguyのansを追加して、両方のイベントをサポートするブラウザーでの二重呼び出しを回避します。
var onBeforeUnLoadEvent = false;
window.onunload = window.onbeforeunload= function(){
if(!onBeforeUnLoadEvent){
onBeforeUnLoadEvent = true;
//your code here
}
};
onbeforeunload
:
event.preventDefault();
を使用してページのクローズをキャンセルできますonunload
:
onunload
よりもonbeforeunload
を使用する理由を私が考えることができる唯一の理由は、onunload
コードにかなりの時間がかかり、ユーザーを望まない場合です閉じるときにハングするウィンドウを表示します。
onbeforeunload
とonunload
の(キャンセル可能性以外の)1つの重要な違いは、前者はダウンロードリンクに対してトリガーされ、後者はトリガーされないことです。例:<a href="https://somewhere.com/thething.Zip">download</a>
はonbeforeunload
ハンドラーをトリガーしますが、onunload
はトリガーしません。