0
window.onbeforeunload = function (e) {
    someFunction();
}

明らかに、ページが更新されるたびに someFunction() が呼び出されます。ただし、Internet Explorer では、部分的なページの読み込みが発生するたびに someFunction() も呼び出されます。どうすればこれを防ぐことができますか? または、非同期呼び出しが行われるたびにトリガーされる jQuery を使用してイベント リスナーを追加するにはどうすればよいでしょうか?

4

1 に答える 1

0

非同期リクエストのライフサイクル中に呼び出されるメソッドは多数あります。それらの任意の数に関連付けることができます。リストについては、 http://api.jquery.com/category/ajax/を参照してください。これにより、ここで行ったように、さまざまなブラウザーの実装にぶつかるのを防ぐことができます。

たとえば、$.ajaxSetup()I を使用して、各リクエストの前に実行する関数を設定できます。

$.ajaxSetup({
  beforeSend: function() {
   console.log( 'New request going out.' ) 
  }
});

呼び出しが完了したら、ロジックを実行することもできます。その場合、 にcomplete渡されたオブジェクトのメンバーに関数を適用し$.ajaxSetup()ます。

$.ajaxSetup({
  complete: function() {
    console.log( 'Call completed.' );
  }
});

これらのメソッドにはいくつかの引数が渡されます。これは、具体的にどのリクエストが行われたかを知る必要があるロジックを実行している場合に使用できます。たとえば、完了には、jQuery によって使用される XHR オブジェクトと、呼び出しに対して返されるステータスが渡されます。

$.ajaxSetup({
  complete: function( jqHXR, status ) {
    console.log( 'Completed: ' + status );
  }
});
于 2012-04-23T23:21:18.510 に答える