JavaScript / jQueryでブラウザのウィンドウがアクティブかどうかを判別する方法
ある動画サイトを閲覧していた際にウィンドウが非アクティブになると視聴中の動画が止まるという機能が見受けられた。動画の再生・停止は置いておいてウィンドウがアクティブかどうかを判別し、それぞれ別の動作をJavaScript / jQueryで実装してみたい。以下に実装方法をメモ。
目次
ソースコード
<html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JavaScript / jQueryでウィンドウがアクティブかどうかチェックするテストページ</title> </head> <div id="alert"></div> <body> <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script type="text/javascript"> //JavaScript //アクティブ時 window.addEventListener('focus', active, false); //非アクティブ時 window.addEventListener('blur', passive, false); //jQuery //アクティブ時 $(window).on('focus', function(){ active(); }); //非アクティブ時 $(window).on('blur', function(){ passive(); }); //アクティブ時に実行する関数 function active(){ document.getElementById(`alert`).innerText = `active`; } //非アクティブ時に実行する関数 function passive(){ document.getElementById(`alert`).innerText = `passive`; } </script> </body> </html>
ウィンドウがアクティブかどうか判別し、それぞれ別の関数をリクエストして#alert内の文字を変更するというもの。
注意点
PCのfirefoxから見た際にJavaScript版だとページ表示時にactive()が実行されたが、jQuery版は実行されなかった。jQuery版を使う場合はあらかじめactive()を実行する必要がある点に注意。
リファレンス
EventTarget: addEventListener(JavaScript)
https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener
focus event(jQuery)
https://api.jquery.com/focus/#on-
blur event(jQuery)
関連記事
-
-
Lightboxで画像拡大時に閉じるボタンの位置を右上に変更
Lightbox(バージョン2.7.1)で画像拡大時に閉じるボタンの位置を右下か ...
-
-
「display: block !important;」指定された要素をjQueryで非表示にする方法
jQueryで特定の要素を非表示にしたかったのでhide()を使用したところ非表 ...
-
-
SortableJSを使ってデータの並べ替え&保存
あるシステムを拝見した際にtableタグ内に並んでいる項目をドラッグ&ド ...
-
-
jQueryで画像(
タグ内)のsrc情報を取得する場合
すぐに出てこなかったのでメモ。 $('#test').attr('src'); ...
-
-
「slick」でブラウザ幅がPCの場合はスライダーを表示し、スマホ幅の場合はスライダー無しにする方法
slickプラグインで画像スライダーを設置しているページがあり、PCのブラウザ幅 ...