आदेश में सक्षम किया गया है यदि संभव हो तो संघर्ष के उपयोगकर्ता को सूचित, मैं अगर एक और ऐड-ऑन स्थापित किया है और सक्षम किया गया है जांच पर ऐड-मेरी करना चाहते हैं। यदि हां, तो मैं या तो इसे या अपने खुद के उपयोगकर्ता की वसीयत में निष्क्रिय कर सकते हैं:चेक एक Firefox 3.5 ऐड-ऑन
function disableExtension(id) {
var man = Components.classes["@mozilla.org/extensions/manager;1"];
if (man) {
man = man.getService(Components.interfaces.nsIExtensionManager);
}
if (man) {
man.disableItem(id);
} else {
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID(id, function(addon) {
addon.userDisabled = true;
});
}
}
लेकिन मैं पहले, निश्चित रूप से एक कुछ अन्य ऐड-ऑन स्थापित किया गया है, तो जाँच करने के लिए। वर्तमान में, मैं यह कर इस प्रकार है:
if (Application.extensions) {
// Gecko 1.9.2 and older
ext = Application.extensions.get(id);
if (ext) {
// TODO check if extension is also enabled
disableExtension(id);
}
} else {
// Gecko 2.0.0 and newer
Application.getExtensions(function(extensions) {
ext = extensions.get(id);
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID(id, function(addon) {
if (!addon.userDisabled) {
disableExtension(id);
}
});
})
}
Firefox 4 (else
-statement) के लिए कोड ठीक काम करता है। फ़ायरफ़ॉक्स के पुराने संस्करणों (3.5 और पुराने) के लिए, मैं अपने जीवन के लिए यह नहीं समझ सकता कि यह निर्धारित करने के लिए कि एक्सटेंशन वास्तव में स्थापित है या नहीं।
क्या कोई यह जानता है कि यह कैसे करें?
दिमाग में आने वाली एकमात्र चीज 'extension.ini' के माध्यम से चल रही है और एक्सटेंशन 'getInstallLocation()' की तलाश में है, लेकिन मुझे यह दृष्टिकोण बिल्कुल पसंद नहीं है। –