勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

JavaScript / jQueryでブラウザのウィンドウがアクティブかどうかを判別する方法

  jQuery JavaScript

ある動画サイトを閲覧していた際にウィンドウが非アクティブになると視聴中の動画が止まるという機能が見受けられた。動画の再生・停止は置いておいてウィンドウがアクティブかどうかを判別し、それぞれ別の動作を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)

https://api.jquery.com/blur/#on-

 - jQuery JavaScript

  関連記事

jQueryで画像(タグ内)のsrc情報を取得する場合

すぐに出てこなかったのでメモ。 $('#test').attr('src'); ...

日本地図のクリッカブルマップをjQueryで実装する方法(japan-map)

JavaScriptもしくはjQueryで日本地図を表示し、都道府県や八地方区分 ...

PHPとSQLiteでi-mobileのデータをグラフ化する方法

i-mobileでクリック保証のアフィリエイトだけど数値が並んでいるだけでグラフ ...

jQueryにてボタンをクリックするとAjax通信し結果をテキストボックスに反映する方法

jQueryを利用しページ内の特定のボタンをクリックすると、指定のページにAja ...

jQueryのCSS変更

jQueryでCSSを触る際、 $("#aaa").css('height',' ...