是否有方法可以像在Firefox中一样注册带有谷歌浏览器扩展的自定义协议:
const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1"; const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1"; const nsISupports = Components.interfaces.nsISupports; const nsIIOService = Components.interfaces.nsIIOService; const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler; const nsIURI = Components.interfaces.nsIURI;
我想要协议:
XYZ:
不是xyz://
这可能吗?
Chrome没有提供为该xyz:
方案设置自定义处理程序的方法。
尽管有一些方法可以模拟行为:
使用内容脚本为指向的链接的点击设置事件监听器xyz:...
。
使用webRequest
API拦截所有请求并将其从默认搜索提供程序重定向到自定义URL。我正在使用这种方法来捕获通配符搜索关键字,但是它也可以用于支持伪造方案。不幸的是,该扩展名非常特定于用户的搜索设置,因为它会执行以下操作:
Redirect http://google.com/search?q=xyz%3Awhatever to chrome-extension://.../whatever
在这两种情况下,您都不会xyz:whatever
在多功能框中看到。
navigator.registerProtocolHandler
应该是注册xyz:
处理程序的最佳方法。不幸的是,目前它是非常有限的。自定义协议必须以开头web+
。还请查看此API 的未解决错误列表。