3

私はSOについて何十もの質問と回答を読みましたが、どれも私の特定の質問に答えていません...それらのほとんどは「ああ、あなたは保存する必要があります」というメッセージをポップアップすることを中心にしています...それは私の必要ではありません。

私は自分のオフィス(公開Webサイトではない)で内部使用するためのアプリケーションを作成しています。特に1つの「ページ」で、ユーザーによる「終了」をログに記録したいと思います。

だから、私はこの簡単なステートメントを持っています:

window.onbeforeunload = function () {
    $.post('LogExit.aspx');
}

postこれで、ページが消えることを知っているため、ブラウザが新しいリクエストを開始することを「望んでいない」ため、これはほとんどの場合失敗します...しかし、迷惑なalertボックスを追加すると、ping100が送信されます時間の%!!!

例:

window.onbeforeunload = function () {
    $.post('LogExit.aspx');
    alert("Ha ha ha, I can delay the browser!");
}

だから、私の質問は...「LogExit.aspx」のpingが確実に実行されるようにするには(または少なくともその可能性を高めるには)どうすればよいですか?

4

2 に答える 2

1

なんらかのリクエストを行う必要があり、応答についてはあまり気にしないため、この場合は画像を使用できます。

window.onbeforeunload = function () {
   var img= new Image();
   img.src = "LogExit.aspx";
   // you have to check on your server to see if it worked :)
}
于 2011-06-30T02:09:39.067 に答える
0

残念ながら、これを達成するための100%、または10%の「保証された」方法はありません...それで、私はevery-10-seconds-send-a-ping機能を持つことによって私の特定のニーズを解決することができました。

私の必要性は、人が特定のページを表示している時間を記録することだったので、上記のこの回避策は、少なくとも10秒の精度のウィンドウに下げるのに役立ちます。

将来、より良い解決策が生まれることを心から願っています。

于 2011-07-03T16:39:39.517 に答える