我有一个桌面 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 则不起作用全部。