38
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PWA環境下で実行されているかを判定する方法

Posted at

はじめに

ReactやAngular、Vue.jsなどの主要なフレームワークを使えばワンステップ+αで簡単に実装できるようになっていることからSSLさえ導入していればおまけ的に導入できるイメージのPWA。

実装を進めていくと「web表示だけ【ホーム画面に追加】の誘導モーダルを出したい」「PWAの環境下でのみストレージにデータを保持させておきたい」といったときにPWA環境か通常のブラウザかを判定する場面が多かれ少なかれ出てきます。
しかし、あまりここに触れている記事を見かけなかったので備忘録も兼ねて掲載します。

本題

メディアクエリのパース結果を利用してJavaScript上で判定します。
以下はmanifest.jsonでディスプレイモード「standalone」を指定した場合を想定しています。

if(window.matchMedia('(display-mode: standalone)').matches){
  // ここにPWA環境下でのみ実行するコードを記述
}

メディアクエリということはCSSでもPWA環境下のみで反映する設定を以下のように簡単にかけます。

@media (display-mode: standalone){
  /* ここにPWA環境下でのみ実行する設定を記述 */
}

PWAのディスプレイモード設定を「standalone」に設定する方が大半だと思われますが「browser」設定はブラウザでもマッチしてしまうので注意してください。

38
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?