我可以从插件/扩展程序中禁用Firefox / Chrome组件吗?

时间:2015-07-01 01:45:30

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

我已经为Firefox和扩展程序添加了一些插件,但现在我有一个疯狂的想法,我想知道我是否可以从插件/扩展程序禁用Firefox / Chrome组件。 < / p>

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

  • Firefox Hello
  • Pocket(Firefox现在与Pocket的默认集成)
  • 历史
  • 收藏夹
  • 其他已安装的扩展程序
  • 资源类似&#34; Print&#34;和&#34;开发人员工具&#34;

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

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

1 个答案:

答案 0 :(得分:0)

从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(','));