xmc*_*mcp 4 javascript firefox google-chrome google-chrome-extension firefox-addon-webextensions
我已经编写了一个 Chrome 扩展程序,我正在将它迁移到其他浏览器,如 Firefox 和 Edge。但是,与 Chrome 的 API 相比,Firefox 上的 WebExtensions API 有一些差异。
所以我必须检测我是否应该使用回调风格的 API(在 Chrome 中,以及在 Edge 中)或承诺风格的 API(在 Firefox 中)。
例如:
if(RUNNING_ON_CHROME)
chrome.permissions.request({
permissions: ...,
origins: ...,
}, function(result) { // callback-style
...
});
else // running on firefox
browser.permissions.request({
permissions: ...,
origins: ...,
}).then(function(result) { // promise-style
...
});
Run Code Online (Sandbox Code Playgroud)
我想知道如何进行RUNNING_ON_CHROME测试。我应该检查 UserAgent 中的相关字符串,还是检查browser!==undefined?
附:Edge 使用browser.*API,但它的 API 是回调式的。
截至目前,您可以依赖browser和chrome:
(自从切换到基于 Chromium 的引擎后,不再用于检测 Edge)
function getBrowser() {
if (typeof chrome !== "undefined") {
if (typeof browser !== "undefined") {
return "Firefox";
} else {
return "Chrome";
}
} else {
return "Edge";
}
}
Run Code Online (Sandbox Code Playgroud)
一方面,每次要调用 API 时都使用它会充满样板;您可以对其中之一进行 polyfill(例如webextension-polyfill用于进入browserChrome)并仅使用其中之一。
另一方面,实现上确实存在差异(即使您获得相同的签名),因此您将需要上述浏览器检测来分离一些逻辑。
| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |