Firefox addon Firefox WebExtensions中的自定义协议

Firefox addon Firefox WebExtensions中的自定义协议,firefox-addon,firefox-addon-webextensions,Firefox Addon,Firefox Addon Webextensions,我有一个Firefox的旧插件,它注册了一个自定义协议“linkpassword://” 由于Firefox版本57,插件停止工作,我不得不将完整的插件重写为Firefox WebExtenstion 我的问题是我找不到注册协议“linkpassword://”处理程序的方法Firefox WebExtensions的manifest.json中的“protocol\u handlers”部分可用于注册公共或自定义协议处理程序 但是从网站上的文档来看,似乎您必须在自定义协议处理程序前面加上web

我有一个Firefox的旧插件,它注册了一个自定义协议“linkpassword://”

由于Firefox版本57,插件停止工作,我不得不将完整的插件重写为Firefox WebExtenstion

我的问题是我找不到注册协议“linkpassword://”处理程序的方法

Firefox WebExtensions的manifest.json中的“protocol\u handlers”部分可用于注册公共或自定义协议处理程序

但是从网站上的文档来看,似乎您必须在自定义协议处理程序前面加上web+某物或ext+某物

您只需使用扩展中的页面作为“uriTemplate”即可处理扩展中的链接,如下所示:

"protocol_handlers": [
    {
        "protocol"   : "ext+linkpassword",
        "name"       : "Password Link",
        "uriTemplate": "html/processLink.html#login=%s"
    }
],

目前,您无法向WebExtensions注册
linkpassword://
的处理程序

到目前为止,只允许使用指定的白名单协议而不使用前缀(比特币
bitcoin
geo
gopher
im
irc
ircs
mailto
mms
news
nntp
sip
sms
smsto
wtai
xmpp
)。任何其他自定义名称都需要以
web+
ext+
作为前缀。请参阅参考

使用前缀,您可以通过以下方式进行注册:

"protocol_handlers": [
    {
        "protocol"   : "ext+linkpassword",
        "name"       : "Password Link",
        "uriTemplate": "html/processLink.html#login=%s"
    }
],
然后您必须在链接中使用
ext+linkpassword://
来触发处理程序

虽然在WebExtensions的当前状态下,您无法为任意协议(如
linkpassword://
)设置处理程序,但它可能会在某一点上发生变化,因为这是有可能的,但很难说什么时候会发生这种情况。在真正的解决方案可用之前,作为临时解决办法,您可以修补
linkpassword://
使用WebExtension JS代码在网页上执行
ext+linkpassword://
,这样即使网页上的链接加载了
linkpassword://
架构,处理程序仍会被触发