ティムが述べたように、Firefox と IE はバックグラウンド タブで JavaScript を実行するため、ユーザーが実際にページを「見ている」のか、どこかで開いているのかを単純なポーリングで確実に判断する方法はありません。ユーザーが実際にあなたのページを見ているかどうかを知る方法はわかりませんが、潜在的な解決策は、ポーリングをアクションにバインドすることです。だからあなたはいくつかの変数を持っているかもしれません
var timesincelastaction=0;
var threshhold = 20;
それで
setInterval("timesincelastaction++",100);
それで
function keepAlive() {
if(timesincelastaction > threshhold) {
$.ajax(...tell the server you are alive...);
timesincelastaction = 0;
}
}
次に、次のようなアクションを考え始めます
$('a').mouseover(keepAlive);
$('div').mouseover(keepAlive);
$(window).scroll(keepAlive);
$(video).play(keepAlive); // okay this isn't a real one but you get the picture
そのため、ユーザーがページ上で行う可能性のある、注意が必要なすべてのことについてブレインストーミングを行い、それらをベンチマークとして使用します。
これは私が知っている少し激しいようですが、おそらくそれを最適化するためのいくつかの良い方法があります. 大声で考えているだけです。他の人が何を考え出すのか興味があります。