【问题标题】:Can I disable Firefox / Chrome components from an addon / extension?我可以从插件/扩展中禁用 Firefox/Chrome 组件吗?
【发布时间】:2015-09-18 00:27:28
【问题描述】:

我已经为 Firefox 制作了一些插件和 Chrome 扩展,但现在我有了一个疯狂的想法,我想知道我是否可以从插件/扩展中禁用 Firefox/Chrome 组件。

当我说禁用组件时,我的意思是(主要是 FF 示例):

  • 火狐你好
  • Pocket(Firefox 现在默认集成了 Pocket)
  • 历史
  • 收藏夹
  • 其他已安装的扩展程序
  • “打印”和“开发者工具”等资源

我已经搜索了整个Firefox Addon Developer Hub,但我没有找到是否可以做这样的事情。如果你知道答案,我该怎么做或者为什么我不能?

您无需描述为什么(或不可能)以及我如何实现这一点,但在这种情况下,请提供有用且有趣的链接。

【问题讨论】:

  • 什么是“真正的”目标?作为用户和开发人员,如果扩展程序禁用了我的打印、开发工具、历史记录、书签等,我会很高兴。如果不是出于明确突出的有价值的原因,我预计会有大量的对您的扩展程序的绝大多数负面评论。

标签: google-chrome firefox google-chrome-extension firefox-addon


【解决方案1】:

在 Firefox 中禁用其他功能非常容易。

这例如通过 id 禁用插件:

//this checks to see if AdBlock Plus is enabled
AddonManager.getAddonsByIDs(["{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}"], function ([aAddon1]) {
    console.log(aAddon1);
    var isAddonEnabled = aAddon1.isActive;
    alert('AdBlock plus enabled = ' + isAddonEnabled)
    //for other properties see here: https://developer.mozilla.org/en-US/Add-ons/Add-on_Manager/Addon#Required_properties
});

组件的处理方式略有不同,您必须使用 nsICategoryManager,这会禁用默认的 pdf 阅读器:

https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsICategoryManager#Remarks

var CONTENT_TYPE = 'application/pdf';

// Update the category manager in case the plugins are already loaded.
let categoryManager = Cc['@mozilla.org/categorymanager;1'];
categoryManager.getService(Ci.nsICategoryManager).deleteCategoryEntry('Gecko-Content-Viewers', CONTENT_TYPE, false);

// Update pref manager to prevent plugins from loading in future
var stringTypes = '';
var types = [];

var PREF_DISABLED_PLUGIN_TYPES = 'plugin.disable_full_page_plugin_for_types';
if (Services.prefs.prefHasUserValue(PREF_DISABLED_PLUGIN_TYPES)) {
    stringTypes = Services.prefs.getCharPref(PREF_DISABLED_PLUGIN_TYPES);
}
if (stringTypes !== '') {
    types = stringTypes.split(',');
}

if (types.indexOf(CONTENT_TYPE) === -1) {
    types.push(CONTENT_TYPE);
}
Services.prefs.setCharPref(PREF_DISABLED_PLUGIN_TYPES, types.join(','));

【讨论】:

  • 你有关于禁用 Firefox 组件的一般文档的链接吗?我的意思是,看起来你给的那个很具体,不是吗?例如,您能否举一个示例,说明如何禁用“历史记录”或“收藏夹”?如果您没有时间给出完整的答案,也非常欢迎提供有据可查的链接。非常感谢您的快速回答,但我现在需要睡觉(明天考试):/
  • 祝你考试顺利@FernandoPaladini 这些例子是具体的,但我链接的页面谈论的是一般用途。 :) 第一个链接在代码中的注释中:)
  • 第一个链接可用于遍历并查看所有已安装的插件,您可以从那里禁用。插件的第二个链接显示了如何根据 contentType 禁用任何内容。然后,如果您不想按 contentType 禁用。探索这些链接也应该向您展示如何获取插件列表 :) 如果您不能让我知道,我们会处理它
  • 您在这里回答了错误的问题。 OP 询问禁用 FF 的某些“核心”功能,而不是插件或插件(尽管这也是,所以它算作部分答案)。
  • 帅哥,什么考试?这个解决方案是考试的答案?如果我能帮助你,那就太酷了,就像考试是几个小时,我及时回复了? :) 是的,可以禁用这些核心功能,但没有标准/通用方式,您必须单独使用它们中的每一个。
猜你喜欢
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多