如何确定 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 不支持的位,因为它们将自己视为所有浏览器的中央文档。

如果您想查看实际支持,请参阅以下资源之一:

那么,如果有一个 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 命名空间以获得最大的可移植性。