首页 > 解决方案 > 无法检测 PWA 是否安装在第一个页面视图上?

问题描述

我有一个桌面 Chrome 扩展程序,我通常希望在每个域上运行它。在manifest.json

  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "run_at": "document_start",
      "js": ["contentScript.js"]
    }
  ],

但是我不希望它为已安装的 PWA 运行。在我的内容脚本中,我进行了以下检查:

const isInstalled =
  window.matchMedia('(display-mode: standalone)').matches ||
  window.matchMedia('(display-mode: fullscreen)').matches ||
  window.matchMedia('(display-mode: minimal-ui)').matches;
if (isInstalled) {
  // Don't run
} else {
  // Run
}

从技术上讲,它仍在“运行”,但这种类型的检查对我来说是可以的。但是,这样做有两个问题:

首先,在第一次安装和打开 PWA 时,检查不起作用,即使在那之后它确实起作用。

其次,在第一次查看之后,它确实适用于我测试的大多数 PWA(keep.google.com、www.soundslice.com、music.youtube.com),但对于 app.starbucks.com,它根本不起作用。

标签: google-chrome-extension

解决方案


推荐阅读