我已经为Firefox和扩展程序添加了一些插件,但现在我有一个疯狂的想法,我想知道我是否可以从插件/扩展程序禁用Firefox / Chrome组件。 < / p>
当我说禁用组件时,我的意思是(主要是FF示例):
我已经搜索了整个Firefox Addon Developer Hub并且我没有找到我是否可以做类似的事情。如果你知道答案,我怎么能这样做或为什么我不能?
您不需要描述为什么它(或者不是)可能以及如何实现这一点,但在这种情况下提供有用且有趣的链接。
答案 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阅读器:
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(','));