Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.
  • Форумы
  •  » Firefox
  •  » Получить максимально подробный список расширений и кнопок

№113-04-2014 13:46:23

preved
Участник
 
Группа: Members
Зарегистрирован: 29-08-2006
Сообщений: 70
UA: Firefox 25.0

Получить максимально подробный список расширений и кнопок

Здравствуйте

Подскажите пожалуйста как получить максимально подробный список(с целью скопировать в буфер обмена) установленных дополнений в Firefox, чтобы там были не только расширения (это я знаю как получить), но и установленные кастомные кнопки (для CB).

Отсутствует

 

№213-04-2014 15:06:57

Mishania
Забанен
 
Группа: Members
Откуда: Usa
Зарегистрирован: 22-10-2011
Сообщений: 357
UA: Firefox 28.0

Re: Получить максимально подробный список расширений и кнопок

preved
Надеюсь кнопка готовая кнопка для CB существенно сэкономит ваше время.

скрытый текст

Выделить код

Код:

try { Cu.import("resource://custombuttons-modules/addons4.js", {}); } catch(ex) {}

function gatherInfo(type) {

    var tmp = [], map = {}, sort = [];
    items.forEach(function(item) {
        if (item.type != type) return;

        var name = item.name ? item.name.toUpperCase() : "UNNAMED";
        name += item.id

        tmp.push(name);
        map[name] = item;
    });
    tmp.sort();
    tmp.forEach(function(name) { sort.push(map[name]) });
    
    var list = "", enabled = 0, disabled = 0;
    sort.forEach(function(item) {
    
        list += (item.name || "unnamed") + " " + (item.version || "");

        if (item.type != "custombuttons" && (item.userDisabled || item.appDisabled)) {
            list += " [ выключен ]\n"; disabled++; return;
        }

        else if (item.type == "custombuttons") {

            var str = item.id;
            var id = str.substring(str.lastIndexOf("custombuttons-button"), str.length);
            var button = document.getElementById(id);

            if (!button) {
                list += " [ НЕ ВЫТАЩЕНА ]\n"; disabled++; return;
            }
            if (button.hasAttribute("initializeerror")) {
                list += " [ ОШИБКА ИНИЦИАЛИЗАЦИИ ]\n"; disabled++; return;
            }
        }

        enabled++; list += "\n";
    });
    return [enabled + disabled, enabled, disabled, list];
}
var items = [];
function extensionsCallback(extensions) {
    var list = "";
    items = extensions;
    
    var info = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
    
    list += info.vendor + " " + info.name + " " + info.version + " (build " + info.appBuildID + ")\n";
    list += "User Agent: " + navigator.userAgent + "\n\n";

    for(var type in AddonManager.addonTypes) {
        
        var name;
        var addonType = AddonManager.addonTypes[type];
        if (addonType.name) name = addonType.name;        
        else if (addonType.id == "custombuttons") name = "Кнопки";

        list += "*** " + name;
        var ext = gatherInfo(addonType.id);
        list += " ( Включено: " + ext[1] + ", Отключено: " + ext[2] + ", Всего: " + ext[0] + " )\n" + ext[3] + "\n";
    }

    var dialog = '\
        <?xml-stylesheet href="chrome://global/skin/"?>\n\
        <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\n\
            xmlns:html="http://www.w3.org/1999/xhtml"\n\
            id="cbbExtensionsLister"\n\
            persist="width height screenX screenY"\n\
            title="Список расширений"\n\
            width="640" height="480"\n\
            buttons="accept,extra1"\n\
            buttonlabelextra1="Копировать все…"\n\
            onload="init()"\n\
            ondialogextra1="copy()">\n\
            <script type="application/x-javascript">\n\
                <![CDATA[\n\
                    function init () {}\n\
                    function copy () {\n\
                        var tb = document.getElementById("addonslist");\n\
                        window.arguments[0].write((opener.navigator.platform.indexOf("Win") != -1) ? tb.value.replace(/\\n/g, "\\r\\n") : tb.value);\n\
                        tb.focus ();\n\
                    }\n\
                ]]>\n\
            </script>\n\
            <textbox id="addonslist" flex="1" multiline="true" />\n\
    </dialog>';
    dialog = "data:application/vnd.mozilla.xul+xml," + encodeURIComponent(dialog);
//    var win = window.openDialog (dialog, "", "chrome,dependent,dialog=no,minimizable", custombuttonsUtils.gClipboard);
    var win = window.openDialog (dialog, "", "chrome,dependent,dialog=no", custombuttonsUtils.gClipboard);

    addEventListener("load", function() {
        var doc = win.document;
        var textbox = doc.querySelector("textbox");
        textbox.value = list;
        textbox.inputField.selectionStart =
        textbox.inputField.selectionEnd = 0;
    }, true, win);
}
AddonManager.getAllAddons(extensionsCallback);


Находил где-то на этом форуме, так-что спасибо автору.

Отсутствует

 

№314-04-2014 17:59:03

preved
Участник
 
Группа: Members
Зарегистрирован: 29-08-2006
Сообщений: 70
UA: Firefox 25.0

Re: Получить максимально подробный список расширений и кнопок

Mishania, спасибо! То что нужно.

Отсутствует

 
  • Форумы
  •  » Firefox
  •  » Получить максимально подробный список расширений и кнопок

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]