3

ユーザーに向けられた新しい質問があるときに、時間に敏感な通知をユーザーに送信するスクリプトがあります。しかし、コンピューターを開いたまま昼食を取りに行く人もいるため、通知が届かないことがわかりました。

ユーザーが 5 分間アイドル状態であるかどうかを検出するスクリプトをまとめようとしています。そうであれば、ユーザーを「オフライン」として表示し、通知を閉じます。

タブ間でも非アクティブを検出できるかどうか興味がありましたか? (たとえば、ユーザーが Facebook.com の別のタブに切り替えてそこでアクティブなままである場合、特に Web ページにアクセスしていなくても、「アクティブ」と見なされます)。

4

5 に答える 5

2

ユーザーがあなたの側にいないときに起こることはすべて (幸いなことに) 追跡することはできません。

したがって、これは不可能です (セキュリティについて考えてください)。

アップデート

今思えば。可能ですが、それできる可能性はほとんどありません。あなたの名前が Google だったら、多くの Web サイトが Google アナリティクスを使用しているため、長い道のりを歩んでいたでしょう。しかし、それ以外: いいえ、上記の理由により不可能です。

于 2012-04-19T19:03:48.827 に答える
1

アクティブなときに最後のアクティビティをデータベース テーブルに保存します。マウスの移動、キー押下、またはその他のアクティビティを使用して、タイムスタンプを更新できます。ユーザーがオンライン/オフラインのステータスを確認できるページで ajax 呼び出しを使用して、そのテーブルを定期的にポーリングします。最後のアクティブ時間が 5 分を超える場合は、オフラインまたはアイドルとして表示します。

于 2012-04-19T19:02:44.380 に答える
1

私がそのようなことをしている場合、HTML5 Visibility API またはフォールバックを使用して、ユーザーがページを離れてから戻ったときにイベントを監視してぼかし、フォーカスします... 残すことは、ブラウザーウィンドウまたはタブのフォーカスを解除することを意味します (ただし、ページを開いたままにします)

しかし、非アクティブに反応したいので...うーん、タイムアウトを開始できます(もちろん、送信、クリック、変更、マウス移動などのようなことが起こった場合に停止するには、多くのイベントに対してグローバルイベント委任が必要です)

于 2012-04-19T19:03:36.280 に答える
0

コードは次のとおりです。

var inactivityTime = function () {
    var t;
    window.onload = resetTimer;
    document.onmousemove = resetTimer;
    document.onkeypress = resetTimer;

    function logout() {
        alert("You are now logged out.")
        //location.href = 'logout.php'
    }

    function resetTimer() {
        clearTimeout(t);
        t = setTimeout(logout, 3000)
        // 1000 milisec = 1 sec
    }
};
于 2012-07-26T09:53:15.293 に答える