如何确定 Firefox 插件是否支持某个方法?
How to find out if a method is supported in Firefox addons?
我正在将 Chrome 扩展程序转换为 Firefox,这是一种方法:
webRequest.onAuthRequired(...)
browser.webRequest.onAuthRequired()
TypeError: browser.webRequest.onAuthRequired is not a function [Learn More]
然而,webRequest/onAuthRequired 是 described in the docs。
我安装了 Firefox 50,但仍然没有。它是否存在于某些开发版本中,如何找到它?
webRequest/onAuthRequired is described in the docs.
是的,明确支持 table 直接说 No Firefox。
MDN 扩展文档镜像 Chrome 文档,甚至是 FF 不支持的位,因为它们将自己视为所有浏览器的中央文档。
如果您想查看实际支持,请参阅以下资源之一:
- Are we WebExtensions yet?(查找跟踪实施的错误的最佳位置)
- Browser support for JavaScript APIs(查找最低支持版本的好地方)
- Chrome incompatibilities
那么,如果有一个 API 还不被支持,你应该在使用它之前检查它是否存在于命名空间中:
if (browser && browser.webRequest && browser.webRequest.onAuthRequired) {
// browser.webRequest.onAuthRequired is not yet supported,
// see https://bugzilla.mozilla.org/show_bug.cgi?id=1190689
} else {
// Can use it
}
没有更好的(运行时)方法来检查支持。当部分支持 API 时,它会变得更加复杂,例如notifications
特性 - 没有通用的方法。
P.S。请注意,browser
是扩展 API 的仅限 Firefox 的(至少目前)变体 - 唯一的区别是它 returns 如果未指定回调,则来自异步函数的承诺。如果您不使用它,请坚持使用 chrome
命名空间以获得最大的可移植性。
我正在将 Chrome 扩展程序转换为 Firefox,这是一种方法:
webRequest.onAuthRequired(...)
browser.webRequest.onAuthRequired()
TypeError: browser.webRequest.onAuthRequired is not a function [Learn More]
然而,webRequest/onAuthRequired 是 described in the docs。
我安装了 Firefox 50,但仍然没有。它是否存在于某些开发版本中,如何找到它?
webRequest/onAuthRequired is described in the docs.
是的,明确支持 table 直接说 No Firefox。
MDN 扩展文档镜像 Chrome 文档,甚至是 FF 不支持的位,因为它们将自己视为所有浏览器的中央文档。
如果您想查看实际支持,请参阅以下资源之一:
- Are we WebExtensions yet?(查找跟踪实施的错误的最佳位置)
- Browser support for JavaScript APIs(查找最低支持版本的好地方)
- Chrome incompatibilities
那么,如果有一个 API 还不被支持,你应该在使用它之前检查它是否存在于命名空间中:
if (browser && browser.webRequest && browser.webRequest.onAuthRequired) {
// browser.webRequest.onAuthRequired is not yet supported,
// see https://bugzilla.mozilla.org/show_bug.cgi?id=1190689
} else {
// Can use it
}
没有更好的(运行时)方法来检查支持。当部分支持 API 时,它会变得更加复杂,例如notifications
特性 - 没有通用的方法。
P.S。请注意,browser
是扩展 API 的仅限 Firefox 的(至少目前)变体 - 唯一的区别是它 returns 如果未指定回调,则来自异步函数的承诺。如果您不使用它,请坚持使用 chrome
命名空间以获得最大的可移植性。