やや高価なjavascript-ajaxing-to-the-server操作を実行するかどうかを決定しようとしていますが、ユーザーがWebページを見ることができる場合にのみ実行する価値があるため、それを検出しようとしています.
最初は「visibilitychange」API を見つけて興奮しましたが、それは Web ページが非表示のタブにあるかどうかを検出するだけのようです。ユーザーが新しいタブではなく新しいブラウザー ウィンドウを開いた場合、イベントは呼び出されません。また、ユーザーが別のアプリに変更したときにも呼び出されません。
また、ブラウザがフォアグラウンドでない場合は動作を遅くしたいと思うので、実際には次の 3 つの状態があります。
- "request-every-5-seconds" ブラウザに入力フォーカスがありますか?
- "request-every-minute" ページのどの部分が実際にユーザーのディスプレイに表示されていますか?
- 「要求しない」ブラウザは別のウィンドウの下に埋もれています。
そうすれば、私の Web ページにアクセスしてブラウザーを開いたままにしておくユーザーは、サーバーまたはコンピューターのリソースを使用しません。
最初の状態監視では、「onfocus」はほとんどの場合機能しますが、フォーカスが開発者ツールに失われる可能性があります。それは少し面倒ですが、それは顧客の典型ではないので、私はそれを受け入れることができます.
2 番目の状態については、どこから始めればよいかわかりません。私が持っていたアイデアの 1 つは、ブラウザーが実際に「ペイント」しているかどうかを検出することでしたが、それを検出する方法は見つかりませんでした。
更新を確認する価値があるかどうかをどのように判断しますか?
[注: 私はすでに jQuery を使用しているので、jQuery ベースの回答で問題ありません。]
ありがとう。