Gan*_*ula 2 firefox-addon google-chrome-extension firefox-addon-webextensions web-extension
我正在开发一个 Manifest v3 浏览器扩展,我需要从后台脚本识别当前正在运行该扩展的浏览器。由于 ManifestV3 扩展使用 Service Worker,因此它没有 DOM 或window. 所以我无法使用window.navigator.userAgent.
我发现一个相关的问题讨论如何获取窗口高度和宽度信息,但我找不到任何其他信息来获取浏览器的 userAgent。
这可能吗?
诸如此类的事情navigator并不特定于窗口的视觉表示。
省略window.直接阅读即可:
navigatornavigator.userAgentatobfetch特定于用户交互或视觉/听觉表示(例如 DOM 或 AudioContext)的事物,或者可能显示用户权限提示的事物。
不适用于工人。解决方法是将这部分代码拆分到屏幕外文档中,并使用消息传递来回传递数据。可以是chrome.runtime 消息传递, navigator.serviceWorker也可以是消息传递,支持Uint8Array、Blob、Map等二进制数据。
windowwindow为了代码清晰或者局部变量被命名为全局属性,请使用它们。
内置globalThis(Chrome/ium 71+、FF 65+)和self
这些是全局范围内与工作人员兼容的别名。请注意,您正在加载的 JS 库理论上可能会重新定义它们,但这确实很奇怪和不正常。
自制global
最可靠的方法,但您必须'use strict'仅在 IIFE 内部添加,而不是全局添加。
webpack 等捆绑程序已经提供了这一功能。
以下是您可以自行复制的方法:
const global = (function(){
if (!this) throw "Don't add 'use strict' globally, use it inside IIFE/functions";
return this;
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2079 次 |
| 最近记录: |