Javascript 我是否可以注销使用nsiWebContentHandlerRegister.registerContentHandler()添加的内容处理程序?
对于我正在创建的引导加载项,我正在Javascript 我是否可以注销使用nsiWebContentHandlerRegister.registerContentHandler()添加的内容处理程序?,javascript,firefox,firefox-addon,feed,Javascript,Firefox,Firefox Addon,Feed,对于我正在创建的引导加载项,我正在startup()中为提要注册一个内容处理程序: const register=Cc['@mozilla.org/embeddor.implemented/web内容处理程序注册器;1'].getService(Ci.nsiwebcontenthandleregister); register.registerContentHandler('application/vnd.mozilla.maybe.feed', myUri, 我的名字, 无效); 这一切都按
startup()
中为提要注册一个内容处理程序:
const register=Cc['@mozilla.org/embeddor.implemented/web内容处理程序注册器;1'].getService(Ci.nsiwebcontenthandleregister);
register.registerContentHandler('application/vnd.mozilla.maybe.feed',
myUri,
我的名字,
无效);
这一切都按预期进行
但是,在shutdown()
中,我想再次注销此内容处理程序,因为否则,在后续启动中,我会得到多个首选项,如:
browser.contentHandlers.types.<n>.*
然而,这对我来说也没有任何作用
有没有办法以优雅的方式注销内容处理程序?或者我需要手动操作吗,通过删除提到的首选项和可能的其他相关“东西”
如果后者是适用的,我需要考虑什么“东西”来彻底清除我的内容处理程序?
编辑:我有一个误会。我还不清楚添加/删除Web提要内容处理程序实际上做了什么 如果您还没有选择默认的rss查看器,我只是在查看浏览器中的rss提要时看到的自动生成的列表。该列表由
browser.contentHandlers.types..*
条目生成
但是内容处理程序也被添加到编辑->首选项->应用程序->Web提要操作列表中。在检查该列表时,发现在调用nsIWebContentConverterService.removeContentHandler()
时,内容处理程序被很好地删除了。只是该方法没有删除由nsiWebContentHandlerRegistrator.registerContentHander()添加的首选项
事实证明,nsIWebContentConverterService
实际上继承了nsiWebContentHandlerRegistrator
,因此它定义了registerContentHander()
和removeContentHandler()
实现nsIWebContentConverterService
的对象是,在检查方法registerContentHander()
和removeContentHandler()
时,我发现removeContentHandler()
没有删除由registerContentHander()
添加的首选项,因此我对此进行了讨论,因为我相信这可能会被认为是一个bug。这可能会有所帮助,这里有一节介绍如何注销协议处理程序,可能类似:@Noitidart谢谢!不幸的是,我有一个误解:removeContentHandler()
实际上删除了内容处理程序,而不是在registerContentHandler()
中添加的首选项,所以我提交了文件(至少,我相信这可能被认为是一个bug)。