我正在开发一个 Manifest v3 浏览器扩展,我需要从后台脚本识别当前正在运行该扩展的浏览器。由于 ManifestV3 扩展使用服务工作线程,因此它没有 DOM 或窗口
。所以我无法使用 window.navigator.userAgent
。
我找到了related question其中讲了如何获取窗口高度和宽度信息,但我找不到任何其他信息来获取浏览器的userAgent。
这可能吗?
最佳答案
中性全局变量
像navigator
这样的东西并不特定于窗口的视觉表示。
只需省略window.
并直接读取:
导航器
navigator.userAgent
atob
获取
特定于窗口的全局变量
特定于用户交互或视觉/听觉表示(例如 DOM 或 AudioContext)的内容,或者可能显示用户权限提示的内容。
不适用于工作人员。
窗口的别名
为了代码清晰或者局部变量被命名为全局属性,请使用它们而不是窗口
。
内置
globalThis
(Chrome/ium 71+、FF 65+)和self
这些是全局范围内与工作程序兼容的别名。请注意,您正在加载的 JS 库理论上可能会重新定义它们,但这确实很奇怪和不正常。
自制
全局
最可靠的方法,但您必须仅在 IIFE 内部而不是全局添加
'use strict'
。
webpack 等捆绑程序已经提供了此功能。
以下是您可以自行复制的方法:const global = (function(){ if (!this) throw "Don't add 'use strict' globally, use it inside IIFE/functions"; return this; })();
关于google-chrome-extension - 在 ManifestV3 Service Worker 后台脚本中使用 `window` 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73778202/