自分のサイトでオンラインになっているすべてのユーザーを表示したい (リアルタイム、他のチャット モジュールと同様)。これを行うために、以下のスクリプトを使用しています。
HTML:
<body onbeforeunload="Unload();" onmousedown="checkfunction();">
</body>
Javascript:
var doClose = false;
document.onkeydown = checkKeycode;
function checkKeycode(e){
var keycode;
if (window.event)
keycode = window.event.keyCode;
else if (e)
keycode = e.which;
if(keycode == 17 ){
doClose = true;
}
}
function checkfunction(){
doClose = true;
}
function Unload(){
if(!doClose){
set_user_log_out(<?php ehco $u_id ?>);
}
}
機能は、set_user_log_out
ログアウトしたユーザーを設定することです。
上記の Java スクリプトでは、以下のシナリオを検討したいと考えていました。
- ユーザーはブラウザで複数のタブを開くことができます。または、複数のブラウザーを開く場合があります (同じブラウザーのみ)。
- ユーザーは 1 つのタブを閉じて、別のタブにアクセスできます。
- ユーザーは 1 つのタブをクリックして、もう一方のタブを閉じるだけです。
- ユーザーは、ログアウト オプションをクリックせずにブラウザを閉じることができます。
- ユーザーは、キーボード ショートカット (例: ctrl+ F4) を使用してブラウザを閉じることができます。
そのため、キーコード(キーボードを使用して押されたキー)もチェックしていました。しかし、このコードにはいくつかの問題があります。以下にそれらについて言及しました。
- 複数のキーのキーコードを取得する解決策が見つかりませんでした (例: ctrl+ F4)
- 2 つのタブを考慮して、(同じサイトの) 他の URL を入力すると、ページが Firefox に読み込まれ続けます。
- ctrl+rは完全には機能しません。
- サイトの他のページにアクセスしようとすると、関数が実行されるだけです
set_user_log_out()
(Firefox でのみ発生します)。
これに必要なものを提案してください。下記のURLも参考にさせていただきました。
Web サイトのユーザーのオンライン ステータスを追跡する方法は?
しかし、上記の URL で説明されている関数は、私のシナリオを考慮していません。