147

ユーザーがブラウザ ウィンドウを閉じるか、ページを更新したときに、最終的な JavaScript コードを実行する方法はありますか?

onload に似ているが、onclose に似たものを考えていますか? ありがとう。

私は onbeforeunload メソッドが好きではありません。これは常に確認ボックスがポップアップする (ページを離れる/mozilla にとどまる) または (リロードする/クロムでリロードしない) ことになります。コードを静かに実行する方法はありますか?

4

8 に答える 8

112

との両方がありwindow.onbeforeunloadwindow.onunloadブラウザによって使用方法が異なります。ウィンドウのプロパティを関数に設定するか、.addEventListener:を使用して、それらを割り当てることができます。

window.onbeforeunload = function(){
   // Do something
}
// OR
window.addEventListener("beforeunload", function(e){
   // Do something
}, false);
   

通常、onbeforeunloadユーザーがページを離れるのを防ぐ必要がある場合に使用されます(たとえば、ユーザーは保存されていないデータで作業しているため、離れる前に保存する必要があります)。私の知る限り、Operaonunloadではサポートされていませんが、いつでも両方を設定できます。

于 2012-11-18T19:10:54.023 に答える
68

わかりました、これに対する実用的な解決策を見つけました。それは、beforeunloadイベントを使用してから、ハンドラーを return にすることで構成されていnullます。これにより、確認ボックスがポップアップすることなく、目的のコードが実行されます。次のようになります。

window.onbeforeunload = closingCode;
function closingCode(){
   // do something...
   return null;
}
于 2012-11-18T23:45:30.247 に答える
16

jQuery のバージョン:

$(window).unload(function(){
    // Do Something
});

更新:jQuery 3:

$(window).on("unload", function(e) {
    // Do Something
});

ありがとうギャレット

于 2016-05-12T12:41:10.700 に答える
9

を使用できますwindow.onbeforeunload

window.onbeforeunload = confirmExit;
function confirmExit(){
    alert("confirm exit is being called");
    return false;
}
于 2012-11-18T19:08:49.853 に答える
5

イベントは と呼ばれるbeforeunloadので、 に機能を割り当てることができますwindow.onbeforeunload

于 2012-11-18T19:07:13.617 に答える