勉強したことのメモ

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

  関連記事

「slick」で作成したスライダー画像にランキングの順位を表示する方法

「slick」で作成したスライダー画像に対して、ランキングの順位を表示したいとい ...

画像アップロード前の時点で画像が選択されているか確認

やりたかった事は、フォーム内で画像をアップロードする際、 ちゃんと画像がローカル ...

jquery.cookie.jsで保存期間を時間指定する方法

jquery.cookie.jsで保存期間を1時間等、時間指定したい。公式サイト ...

jQueryとCSSで指定したテキストに対してラインマーカーを引く方法

サイト内で強調したいテキストに対して蛍光ペンでマーカーを引くようなアニメーション ...

jQuery UI Datepickerで日本の祝祭日を表示

やりたかった事は、jQueryのカレンダーピッカーで 日本の祝祭日の色を変えると ...