Chrome扩展程序:自定义协议?
是否有方法注册一个自定义协议与谷歌Chrome扩展,就像你可以在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:
scheme设置自定义处理程序的方法。
有一些方法可以模拟这些行为:
xyz:...
链接设置一个事件监听器xyz:...
使用webRequest
API拦截并将所有请求从默认搜索提供程序重定向到自定义URL。 我使用这种方法来捕获通配符搜索关键字,但它也可以用于支持伪造方案。 不幸的是,扩展名对于用户的搜索设置非常具体,因为它会做这样的事情:
Redirect http://google.com/search?q=xyz%3Awhatever
to chrome-extension://.../whatever
在这两种情况下 ,尽管如此,你不会看到xyz:whatever
在多功能框中 。
navigator.registerProtocolHandler
应该是注册xyz:
handler的最佳方式。 不幸的是,目前它非常有限。 自定义协议必须以web+
为前缀。 另请看看这个API的开放错误列表。