仕事で苦労したトコロを備忘録しておきます。
「window.beforeunload」などのイベントの際にajaxで離脱イベントログをサーバーにsendするような時、
ブラウザはページが切り替わったら、サーバーセッションも瞬時に切ってしまう事は、容易に想像できる。
でも、これはブラウザ毎に挙動が違っていて、ちゃんとajaxでもセッション完了を待ってくれるブラウザもあれば、強制的にちょんぎられる場合もある。
ただ、待ってくれる保証がない以上、これは、システム側で確実にサーバーにデータを送る必要があるので、その時の対応。
指定時間分waitさせる関数
//ログ書き込みの為のウェイト値
function sleep(sleep_time){
var current = new Date();
var end_point = new Date();
for(var i=0;current.getTime()-end_point.getTime()<sleep_time;i++){
current = new Date();
}
};
実行処理
sleep(500);
これで500ミリ秒間、ブラウザをキープしてくれる。
きれいにセッションが切れた事を判定するには、ajax側でレスを返してそれを判定するという方法もあるが、この方法で、計測誤差もそんなに出ていないことを考えると、さほど悪くないと思われる。
いかがだろうか?
0 件のコメント:
コメントを投稿