2010-12-07 4 views
37
ユーザーが現在のページからオフに移動するとき、私は、サーバーにメッセージを投稿したい

、私は今.unload使用していますが、結果は、その文書が真言われてもで、信頼できない:正確なハンドリングjquery:アンロードまたはアンロード前に?

アンロードイベント のバージョンは、 ブラウザのバージョンによって異なります。たとえば、 ウィンドウが閉じているときに、 リンクが続いたときにFirefoxの一部のバージョンがイベントをトリガーします。実際には、 の動作は、サポートされているすべてのブラウザ でテストする必要があります。 は、独自のbeforeunload イベントと対照的です。

beforeunloadイベントを使用する必要がありますか?それは信頼できますか?

+1

FYI:アンロードは廃止予定です。https://api.jquery.com/unload/ –

答えて

55

はい、beforeunloadはこのように、(jQueryのを介して結合していない)より信頼性の高いですが、それを直接割り当ててください:

window.onbeforeunload = function() { /* do stuff */ }; 

作業のみ、行われるためunloadイベント自体が意味されていませんでしたオブジェクトのクリーンアップ...ガベージコレクタがより良くなり、ブラウザがunloadイベントを発生させる理由が少なくなります。

特定のケースでは、サーバーに同期要求を行う必要があることにも注意してください。そうしないと、ブラウザはAJAX呼び出しが完了するまで待機しません。

+1

すべてのブラウザ(IE6など)でwindow.onbeforeunloadを起動できませんか? – Kangkan

+1

@ Kangkan - ええ、もっと悪い広告ブロックでこれを防ぐことはできますが、かなり稀ですが。 –

+0

ユーザに表示されるイベントハンドラから文字列値を返すことができることに言及する必要があります。 – jAndy

関連する問題