ページ離脱などの際にデータ保存する時間をウェイトさせる方法

2014年11月13日

Javascript

仕事で苦労したトコロを備忘録しておきます。 「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側でレスを返してそれを判定するという方法もあるが、この方法で、計測誤差もそんなに出ていないことを考えると、さほど悪くないと思われる。 いかがだろうか?

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。