問題タブ [visibilitychange]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3060 参照

javascript - JavaScriptを使用して新しいタブをクリックしたときにビデオを一時停止する方法は?

新しいタブが開いているときにオーディオを一時停止したいビデオ HTML タグに取り組んでいます。Pls はこの問題を解決するのに役立ちます。

0 投票する
1 に答える
506 参照

javascript - WebBrowser コントロールで使用すると、document.hidden が誤って false になる

JavaScript でウィンドウが最小化されたことを検出したいので、 を使用していdocument.hiddenます。以下のスニペットで、[開始] をクリックし、最小化ボタンをクリックしてウィンドウを最小化し、タスクバーのアプリケーション アイコンを切り替え、Win+ 、 +などDown Arrowを使用します。WinD

ウィンドウを最小化すると、テキストエリアに「hidden」と表示されます。

そこに問題はありません。

ただし、この JS コードは VB6 でホストしています。

コントロールWebBrowserCommandButton. 私の唯一のコードはこれです:

コマンド ボタンをクリックすると、同じページに移動します。

ここに画像の説明を入力

VB6 では、次の 3 つの場合に「非表示」が表示されます。

  • 最小化ボタンをクリックする
  • Win+Down Arrow
  • Win+D

しかし、この場合はそうではありません:

  • タスクバーのアプリケーション アイコンの切り替え

また、ウィンドウが最初に最小化"hidden"されたときにのみ表示されることにも気付きました。再度最小化すると「可視」と表示されます。

これは、WebBrowser コントロールが JS と統合する方法のバグだと思いますか? これに対する回避策はありますか?


document.hiddenこれは間違っていることとはあまり関係がなく、JS のPage VisibilityWebBrowserとうまく統合されていないことと関係があるため、この質問をより広い質問にすぐに転用する可能性があります。

私が発見したより一般的な問題は、VB6visibilitychangeのコントロールによってホストされているページで実行するとハンドラーが起動しないがWebBrowser、ブラウザーでは完全に正常に動作することです。

0 投票する
2 に答える
2276 参照

navigation - ドキュメントの可視性の変更とウィンドウのぼかし/フォーカス、違いは何ですか?いつどちらを使用するのですか?

ECMAscript (=Javascript) では、ユーザーがページから離れているかどうかを確認する方法が 2 つあります。で " visibilitychange" イベントをリッスンするか、 で " " および " " イベントをdocumentリッスンできます。それらの間に違いはありますか?blurfocuswindow

0 投票する
0 に答える
326 参照

javascript - JavaScript/PHP: Web ページでのユーザーのビデオ視聴時間を追跡しますか?

私の顧客は、教師と生徒の両方が登録できるビデオ チュートリアル サイトを提供しています。教師にフィードバックを提供するために、各ビデオの生徒のビデオ視聴時間を追跡する必要があります。このサイトは、純粋な HTML/PHP/JS/MySQL を使用して開発されています。ビデオはビデオ ホスティング事業者によって配信され、特別な JavaScript-API は提供されません。誰かが実際に動画を見て内容を理解していることを確認する方法がないことはわかっています (試験やクイズを提供する場合を除きます)。したがって、「見る」とは、次の技術的事実を組み合わせて時間を追跡することを意味します。

  • ブラウザ ウィンドウが表示されている (最小化されていないか、バックグラウンドでタブが表示されている)
  • ビデオが実行されている (一時停止/停止していない)

ビデオの長さは 6 分以上であるため、正確な秒数を取得する必要はありません。ここでは、おおよその値 +-10 秒で十分です。私はすでに次のアプローチを作成しましたが、まだ考えていない大きな欠点があるかどうかはわかりません: ビデオの再生が開始されると、たとえば 10 秒ごとに間隔が発生します。ビデオの状態が「running」で、document.visibilityState が「hidden」でない場合、間隔はデータベースへの ajax リクエストを起動し、エントリ「user_id、video_id、datetime」を保存します。そのため、cronjob はこれらのマイルストーンを 1 日 1 回収集し、ユーザー/動画ベースで合計視聴時間を計算できます。もちろん、これらのエントリ間の時間が特定の値 (この場合は 15 秒) を超えないようにする必要があります。

よりスマートで安全な方法を知っている人はいますか、それとも大きな欠点はありますか

  • 信頼性
  • 機能 (デスクトップ/モバイル ブラウザー)
  • パフォーマンス (データベース?)

私とあなたの考えを共有してくれてありがとう!

0 投票する
3 に答える
224 参照

angular - Angularでは、ユーザーが現在のタブから変更できないようにする方法は?

セキュリティ対策として、ユーザーが試験中にタブを変更したり、新しいタブを開いたりできないようにしたい試験アプリケーションがあります。同じことを達成する方法を提案できますか?