2011-07-15 3 views
0

私は、ユーザーの勤務時間とワークフローを追跡するシステムがこのようなものですしました:また、ログアウトし、彼/彼女は、ユーザーがログインをしているとボタンのボタンは、ボタンに/そこにある場合は
ブラウザ近い問題が再び

イベントを処理します。

問題は、ユーザーがブラウザ/タブを閉じるときに、私は彼または彼女が出ていることを処理できません。残念ながら、ブラウザ/タブクローズイベントの処理については読んだことがありますが、実際には不可能です。私の次のアプローチはクッキーでは信頼できませんが、ページonUnloadsがそのクッキーをロードするときにクッキーを保存します。ユーザーがログインすると、ユーザーの最後のアクティビティを含むクッキー値を取得し、 。しかし、欠点は、ユーザーが最後の活動についての適切な情報を持たない異なるブラウザ/マシンでサイトに来る可能性があることです。

+0

*「あなたのアイデアを教えてください」*質問してください。 (そして、いいえ、「*」を追加して「ブラウザ終了の問題をもう一度?」を追加してください。)* 012 **は**質問していません) –

答えて

0

あなたはWindow.addCloseHandler()経由closeHandlerを追加してみました。ユーザーがウィンドウ/タブを閉じると呼び出されます。ハンドラでは、サーバに近いメッセージなどを送信できます。

+0

はい、試してみましたが問題はonUnLoadを使用して処理していますこのイベントが発生したサイトをページを更新するか、ナビゲートすると、クローズイベントが発生します。 –

+0

GWTは一般に1ページのアプリケーションであると想定していますが、これは頻繁に起こるものではありません。ユーザーがページをリフレッシュ/ナビゲートして同じページを再び開いたときに、閉じるイベントと再オープンの間の時間がある時間内にあるかどうかをチェックし、以前の終了イベントを何らかの形で無視するかどうかを確認できます。 –

0

私は個人的にセッションオブジェクトを見ます。それが終わると、あなたは何をする必要があれば何でもすることができます。

0

あなたができることは、毎分サーバーへのjavascript呼び出しです(ここで説明するJavscriptタイマー機能を使用します:http://www.w3schools.com/js/js_timing.asp)。

ただし、ブラウザを使用したアプローチが正しいかどうかはわかりません。定義上、ブラウザ/サーバ接続は接続されていません。 Cookieは、HTTPプロトコルがそのような機能を提供しないため、接続を維持するための単なる方法です。

第2のポイントは、ユーザーが別のブラウザから接続したときにトラックを保持することです。ユーザーが2つの異なるブラウザを同時に使用するのはどうですか?ユーザーをどのように検出しますか(ブラウザが開いたときに認証するか、IPアドレスに頼ることができますか)私が示唆しているのは、ブラウザアプリケーションではなく、これを処理するための適切なアプリケーションがあることです。それを書くことはそれほど複雑ではありません。

まあ、アプレットとはAdobe Flashをブラウザで機能を強化するための解決策になる可能性が...

関連する問題