3

ユーザーがページを離れたときに投稿クエリを実行しようとしています。私が取り組んでいるコードは

<script type="text/javascript">
window.onbeforeunload = function(){
    var used = $('#identifier').val();
    $.post('conversation.php?leave=true',{ud:used});
}
</script>

私がここでやっていることに何か問題がありますか?FF エラー コンソールに表示される結果は、関連のない他の関数/変数が定義されていないことを示しているだけです (それらはアンロードされているため)。何を修正する必要があるかについてのヒントや指針はありますか?

4

1 に答える 1

5

beforeunload簡単な答えは、イベントで非同期AJAX呼び出しを確実に行うことはできないということです。ブラウザーのガベージがページを収集するため、終了する前に終了する可能性が非常に高くなります。次のように、同期呼び出しを行うことができます。

$.ajax({ 
  type: "POST", 
  url: 'conversation.php?leave=true', 
  data:{ud:used}, 
  async: false
});

ただし、これを行わないでください。ユーザーがページに必要以上に長く閉じ込められ、ユーザーが離れることができなくなり、ユーザーエクスペリエンスが低下します。これにより、実行中にブラウザがロックされることにも注意してくださいasync: false。可能な限り回避する必要があります。

于 2010-11-20T23:00:46.747 に答える