是否有方法像在firefox中那样注册带有google chrome扩展名的自定义协议(protocol):
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;
我想要协议(protocol):
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:
处理程序的最佳方法。不幸的是,目前它是非常有限的。自定义协议(protocol)必须以web+
为前缀。还请查看此API的list of open bugs。关于google-chrome - Chrome扩展程序: Custom Protocol?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20836554/