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

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

Сustom Buttons » Custom Buttons » Вчера 14:03:42

solombala пишет

Как  убить мультипроцесс в74 ? Это в портабл новая portable32.dll не дает.

portable32.dll v.8.0.3 (8 марта 2020г.)
Firefox 74.0.1 и Firefox 75.0 RC build3

Всё работает. Переключение подхватывается
и после рестарта, и при обычном запуске. Не мути воду.

xrun1 пишет

отвалилась кнопка

Консоль тоже отвалилась?
Удали строку с ошибкой, или в ней: Ci.nsIPlaintextEditor || Ci.nsIEditor

Сustom Buttons » Custom Buttons » 24-03-2020 09:26:20

egorsemenov06 пишет

Можно эту кнопку адаптировать для user_chrome_files

[spoiler][code]try {((label, ...args) => CustomizableUI.createWidget({
    label,
    localized: false,
    tooltiptext: label,
    id: "gtBookmarklet",
    onCommand: e => e.view.gBrowser.loadURI(...args),
    onCreated: btn => btn.image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrI

Сustom Buttons » Custom Buttons » 22-03-2020 20:51:59

Inko7 пишет

теперь бы как-то на клавишу F8 повесить это действие
такое реально?

Ну, например, так (в custom_script_win.js).
e.preventDefault() и e.stopPropagation() не знаю нужно или нет,
раскомментируй, если нужно.
[spoiler][code]try {(id => {
    var listener = {
        get obj() {
            var obj = document.getElementById(id);
            if (obj) obj = obj.linkedObj;
            else {
                obj = Cu.import("resource:///modules/CustomizableUI.jsm", {})
                    .gPalette.get(id);
                if (obj) obj = obj.implementation;
                else {
                    Services.console.logStringMessage(id + " not found");
                    return this.destroy() || {switch() {}};
                }
            }
            delete this.obj; return this.obj = obj;
        },
        handleEvent(e) {
            if (e.key != "F8" || e.ctrlKey || e.shiftKey || e.altKey || e.repeat)
                return;
            //e.preventDefault();
       

Сustom Buttons » [CB]Attributes Inspector (для разработчиков) » 21-03-2020 14:07:22

Andrey_Krropotkin
Edit_Custom_Button_in_Tab здесь совершенно нипричём.

Это из-за Custom Buttons в моём исполнении.
По совершенно посторонним groupbox'ным причинам
захотелось посмотреть, насколько плохо это смотрится на Linux.

С превеликим трудом и приключениями поставил в виртуалку
Mint 19.3 Mate, и оказалось(!), что там, в отличие от Windows,
.xul адреса не просто грузятся ущербно, а вообще не грузятся.
Вместо загрузки выскакивает знаменитый диалог unknownContentType.xhtml

Поэтому было принято решение делать так:
nsIContentPolicy.shouldLoad() <— REJECT_REQUEST,
xhtml-override —> browsingContext.loadURI()

Таким образом, данная ошибка это побочный эффект.
Увы, могу только лишь предложить просто смириться с этим.

Сustom Buttons » Custom Buttons » 20-03-2020 23:41:09

Inko7 пишет

а библиотека user_chrome_files имеет больше шансов на существование?

скрытый текст
Если в смысле кода, то, думаю, что да.
Автор довольно крут, и код посовременнее будет,
а CB весь такой олдскульный, весьма чувствителен к закидонам лисорубов.

А если в смысле как производное от конфигурационного файла,
то здесь все в одной лодке.

Баг о превращении config.js в ничто существует.
И патч к багу есть, и патч к багу одобрен.

То есть, стоит сделать пару кликов, и, уже максимум через сутки,
можно будет констатировать:
«Файерфокс Релиз Бетович. Время смерти ... »

критично чего не хватает, так это кнопки Switch Keyboard Layout
пожалуйста портируй ее для  user_chrome_files

Как-то так, наверно (в custom_script.js)
[spoiler][code]// http://infocatcher.ucoz.net/js/cb/switchKeybLayout.js
// https://github.com/Infocatcher/Custom_Buttons/tree/master/Switch_Keyboard_Layout

// Switch Key

Сustom Buttons » Custom Buttons » 19-03-2020 14:44:45

solombala пишет

Чтобы еще приделать к коду, чтоб видно было , что тухнет?

Ну, например

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


voqabuhe пишет

А в том же окне звёздочки из строки Папка никак нельзя взять, там же как раз остаётся последняя папка в которую добавлялась закладка?

Может и взял бы, если бы после «показывало последнюю папку куда добавлялась закладка»
было бы так и написано « посредством окна звёздочки».

Inko7 пишет

если бы понимал все отличия между custom_script.js | custom_script_all_win.js | custom_script_win.js (инфу толком не нашел)

[spoiler]custom_script.js исполняется один раз,
при запуске браузера, асинхронно, после топика "profile-after-change".
Загружается в [System Principal] Sandbox (отдельный глобальный объект).
Предустановлены ссылки на объекты, экспортируемые популярными
модулями Services.jsm и CustomizableUI.jsm

[b]cus

Выделить код

Код:

document.querySelector(
    "#mainPopupSet > tooltip[onpopupshowing*=undoCloseTabsList]"
)?.undoCloseTabsList.updUI();

Сustom Buttons » Custom Buttons » 18-03-2020 20:34:06

voqabuhe пишет

А можешь ещё добавить, если вкладка не в закладках, чтобы при наведение на звёздочку показывало последнюю папку куда добавлялась закладка?

Не, я не знаю откуда взять об этом информацию.
Можно попробовать подрядить обсёрвер, чтобы он это дело пас,
но изначально всё равно неоткуда, со всеми вытекающими
[spoiler][code]((g, id, bm, bu, {star} = bu) => {
    addDestructor(r => r[5] == "e" && id in g && g[id].observe(r));
    var bobs = g[id];
    if (!bobs) {
        var fGuid = id + "Guid", pref = "CB." + fGuid;
        var {obs, prefs} = Services, pobs = PlacesObservers;
        var mk = PlacesUIUtils.LAST_USED_FOLDERS_META_KEY;
        bobs = g[id] = {
            async init() {
                bm.addObserver(this);
                pobs.addListener(["bookmark-added"], this.added = this.added.bind(this));
                obs.addObserver(this, "quit-application-granted", false);
                var guid = g[fGuid] || prefs.getStringPref(pref, "");
                if

Сustom Buttons » Custom Buttons » 17-03-2020 16:45:54

Andrey_Krropotkin пишет

а этот код можно подправить

Не знаю, можно, наверно
[spoiler][code]((bu, bm, {star} = bu) => addEventListener("mouseenter", {
    async handleEvent() {
        if (!this.starred) return;
        star.tooltipText = "\u3164";
        var result = [];
        await this.fetch();
        for(var guid of this.guids) {
            var arr = [];
            while(true) {
                if (!this.hover) return;
                var res = await bm.fetch(guid);
                if ((guid = res.parentGuid) == bm.rootGuid) {
                    arr.unshift(bm.getLocalizedTitle(res));
                    break;
                }
                arr.unshift(res.title || "[Безымянная папка]");
            }
            result.push(arr.join("\\"));
        }
        this.hover && this.setTooltip(result);
    },
    get fetch() {
        addDestructor(() => this.starred && document.l10n.translateElements([star]));
        var set = this.guids = new Set();
        var arg

Сustom Buttons » Custom Buttons » 16-03-2020 20:26:34

VitaR пишет

Какую версию (и, главное, откуда) ставить на текущий Waterfox-Classic (+e10s, +Classic Theme Restorer), то бишь, как я понимаю, 56.3?

Ох, разве вспомнишь. Есть свидетельство от kokoss.
Точно вычислить самую оптимальную не возьмусь.
Скажем так: последняя оверлейная версия, похоже, здесь.

Но глюки с открытем из консоли строки с ошибкой на две дальше, чем на самом деле,
и с удалением горячей клавиши кнопки из cbIKeyMapService при закрытии окна браузера,
там присутствуют.

А так-то, поставил на Waterfox Classic 2020.03.1 и, на первый взгляд, в основном, всё работает.
Если в папке профиля осталась папка custombuttons c <parsererror>'ами от «неправильного XUL»,
то, после установки, следует закрыть Waterfox и удалить эту папку.

Сustom Buttons » Custom Buttons » 15-03-2020 20:17:48

Andrey_Krropotkin пишет

Выдает NS_ERROR_ILLEGAL_VALUE

Да, вижу. Опять переделали. Такой вариант

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


Выделить код

Код:

                //wbp.saveURI.length == 9 && args.splice(2, 0, null);
                wbp.saveURI.length == 9 && splice(args);
                wbp.saveURI(...args);
            });
        }
        var splice = arr => {
            var fox74 = parseInt(Services.appinfo.platformVersion) >= 74;
            var args = [fox74 ? 7 : 2, 0, fox74 ? Ci.nsIContentPolicy.TYPE_IMAGE : null];
            (splice = arr => arr.splice(...args))(arr);
        }

Сustom Buttons » Custom Buttons » 15-03-2020 17:11:46

Andrey_Krropotkin пишет

А можно сделать так, чтобы gSubDialog.open срабатывал

Чтобы он открывал субдиалог нужна chrome:// страница с определённым
содержимым, так что, если я правильно понял вопрос, то, скорее, нет.

func4ptch4 пишет

Как сюда воткнуть тултип

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


func4ptch4 пишет

подлагивает

CURL() при каждом вызове добавляет новую
бесконечную петлю таймаутов, может это сказывается.

solombala пишет

Встряли конкретно с сохранить PNG

Ну, у меня вот так, вроде, сохраняет.
[spoiler][code]    var url = gBrowser.selectedTab.image;
    url && saveImageURL(
        url, getSiteName(), null, false, false, null, null,
        /^data:(image\/[^;,]+)/i.test(url) ? RegExp.$1.toLowerCase() : Cc["@mozi

Выделить код

Код:

    var tooltipText = "Как видно?";
    addEventListener("popupshowing", e => {
        if (btn.contains(document.tooltipNode))
            e.target.label = tooltipText;
    }, false, document.getElementById("dynamic-shortcut-tooltip") || 1);

Сustom Buttons » Custom Buttons » 13-03-2020 18:41:20

VORON пишет

для 68й что то не найду

В add_toolbar_buttons есть такая кнопка.
В крайнем случае можно попробовать сделать экстракт для вкладки Код.

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


Andrey_Krropotkin пишет

В блоке saveScript - если XMLHttpRequest() сделать асинхронным, то все рушится.

Так делал?
[spoiler][code]        //xhr.open('GET', url2, false);
        //xhr.send();

Выделить код

Код:

var wt = "Toolkit:PasswordManager";
var win = Services.wm.getMostRecentWindow(wt);
var uri = gBrowser.currentURI;
try {
    var filter = Services.eTLD.getBaseDomain(uri);
} catch(ex) {
    var filter = uri.asciiHost;
}
var setFilter = e => (win || e.target.ownerGlobal).setFilter(filter);

if (win) win.focus(), setFilter(); else openDialog(
    "chrome://passwordmgr/content/passwordManager.xul",
    wt, "chrome,dialog=no,centerscreen,resizable"
).addEventListener("pageshow", setFilter, {once: true});

Сustom Buttons » Custom Buttons » 10-03-2020 22:42:22

solombala пишет

Упал аддон в 74

Не вижу. Скачал, установил в 74.0, нормально работает,
ну кроме как в той части, которая пострадала от того,
что ты, зачем-то, выбросил button.css

Ещё раз
Может пропустил, но я упоминал баг, в котором для Firefox 74+
была изменена политика в отношении некоторых типов аддонов.

Приципиальное разрешение на paxmod'ы привязали
к подписячему флагу, а пользовательское произволение
реализуется посредством настройки extensions.experiments.enabled

А вот расширения запрещены полностью и для всех каналов обновления.

Конфигурация дадена. Если не нравится, тогда используй другую.
Если не нравится JS-воздействие как таковое, тогда обеспечь
аналогичное правкой omni.ja

Но если ничего не сделать, тогда конечо, bootstrap-расширения
(а другие и невозможны уже давно) работать не будут.

Andrey_Krropotkin пишет

Could not convert JavaScript argument arg 0 [nsISupports.QueryInterface]

nsIPlaintextEditor [url=https://bugzilla.mozilla.org/s

Сustom Buttons » Custom Buttons » 10-03-2020 11:30:12

dezhnev пишет

на 74b9-dev и найтли тоже от 090320
пытаюсь переустановить

Я собрал портаблы указаных версий и на обе CB установился без проблем.

Сообщение на скринах довольно экзотическое. Обычно, если что-то
пошло не так, то пишет типа «повреждено» или «непроверено»,
но чтобы «несовместимо», — как-то даже не припомню такого в истории
нынешних последних времён.

Помимо проверки установки на чистых профиле/портабл/инсталляции,
возможно, будет представлять интерес то, что во время установки
пишет консоль, если включить extensions.logging.enabled

Сustom Buttons » [CB]Undo Close Tabs » 09-03-2020 16:33:53

Infocatcher пишет

Хорошо хоть старый хак по-прежнему помогает дергать недра модулей

Да, это полезно, если там что-то задаётся через let, const или class
И, если я правильно понял, то для Firefox 65+ даже разрешили
(предположительно здесь) загружать scriptloader'ом адреса
с протоколом data:, то есть можно избежать использования Blob

Но, в данном случае, никак вредить не стали, и losslessDecodeURI
остался определяющимся через function
а значит у NSVO образуется соответствующее свойство,
и к нему можно обратиться напрямую.

Вот, есть ли здесь ошибки, если записать, например, так?
[spoiler][code]    get _losslessDecodeURI() {
        var ldu;
        if("losslessDecodeURI" in window)
            ldu = losslessDecodeURI;
        else if("UrlbarInput" in window) // Firefox 75+
   

Сustom Buttons » Custom Buttons » 09-03-2020 16:31:05

«Merge Day»

Трудно поверить, но, похоже, Custom Buttons за этот цикл не сломали.
Таким образом, остаётся десятка, обновление не требуется.
̣ ̣

Andrey_Krropotkin пишет

Если тестирую браузер нужен AGENT_SHEET, если сайт - USER_SHEET

Странное утверждение. AGENT_SHEET нужен для стилизации NAC.
В любом случае, можно сделать две (или даже все три) кнопки для preview разных типов.
Кстати, AGENT_SHEET preview может глючить, например для NAC-тултипа браузера.

Andrey_Krropotkin пишет

Код:

Посмотрел. Да, вполне подойдёт. Метод используется только в одном месте
для получения ссылки на gBrowser. Сам скрипт, конечно, для однопроцессного режима.
В saveURI() передаётся, почему-то, 8 аргументов, хотя idl говорит, что нужно 9.

Сustom Buttons » Custom Buttons » 08-03-2020 10:33:33

Andrey_Krropotkin пишет

добавить контестное меню в окно

Для этого нужны обеспечительные скрипты и стили.
Можно заменить CSSTester.prototype.init()
[spoiler][code]    init() {
        var url = "data:application/xhtml+xml;charset=utf8," + encodeURIComponent(
            `<?xml version="1.0"?>
            <?xml-stylesheet href="chrome://global/skin/menu.css" type="text/css"?>
            <?xml-stylesheet href="chrome://global/skin/popup.css" type="text/css"?>
            <html xmlns="${xhtmlns}">
                <head>
                    <title>CSSTester</title>
                    <script src="chrome://global/content/globalOverlay.js"/>
                    <script src="chrome://global/content/editMenuOverlay.js"/>
                    <style>#textarea{width:calc(100% - 2px)!important;}</style>
                </head>
                <body></body>
            </html>`
        );
        var proto = CSSTester.prototype;
        var uri = Services.io.newFileURI(Services.dirsvc.get

Сustom Buttons » [CB]Undo Close Tabs » 07-03-2020 11:19:53

Infocatcher
losslessDecodeURI департировали (1610533 + 1610475) в NSVO UrlbarInput.jsm :(.

Сustom Buttons » Custom Buttons » 07-03-2020 11:16:59

Andrey_Krropotkin пишет

можешь посмотреть функцию CSSTester.prototype (необязательная можно и скрыть) - там выдает ошибки на кнопки при открытии окна.

Объект же, а не функция.
Если имеется в виду установка doc.body.innerHTML в CSSTester.prototype.handleEvent()
то да, это не будет нормально работать для нас, так они решили, типа небезопасно.
Можно воспользоваться DOMParser'ом, тогда не будет ошибок при открытии окна,
но сам CSSTester от этого, разумеется, лучше не станет.
[spoiler][code]                //doc.body.innerHTML = '\

                doc.body.append(...new doc.ownerGlobal.DOMParser().parseFromSafeString('\
                    <style type="text/css">\
                        :not(input):not(select) { padding: 0px; margin: 0px; }\
                        table { border-spacing: 0px; }\
                        body, html, #main, #textarea { width: 100%; height: 100%; }\
                        #textarea { font-family: monospace; }\
                    </style>\
       

Сustom Buttons » Custom Buttons » 05-03-2020 23:27:27

Andrey_Krropotkin пишет

Тут в window.UCL я добавляю - AUTHOR_SHEET : Ci.nsIStyleSheetService.AUTHOR_SHEET
Теперь надо еще исправить строчку menuitem.setAttribute("class", "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : "USER_SHEET"));

Ну, например

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


и строчку this.SHEET = /^xul-|\.as\.css$/i.test(this.leafName) ?  Ci.nsIStyleSheetService.AGENT_SHEET: Ci.nsIStyleSheetService.USER_SHEET;

А метку перед расширением для AUTHOR_SHEET
я что ли должен придумать вместо тебя?
Ладно, допустим blabla.au.css, тогда, опять же, например
[spoiler][code]    //this.SH

Выделить код

Код:

            //menuitem.setAttribute("class", "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : "USER_SHEET"));

            menuitem.setAttribute("class", "usercssloader-item " + (
                CSS.SHEET == this.AGENT_SHEET ? "AGENT"
                    : CSS.SHEET == this.AUTHOR_SHEET ? "AUTHOR" : "USER"
            ) + "_SHEET");

Сustom Buttons » Custom Buttons » 05-03-2020 20:34:41

Andrey_Krropotkin пишет

вот добавил в твой код

А g на h зачем заменил?
Вобщем, чуть переписал, вроде работает, на первый взгляд.
[spoiler][code]        addBtn(doc) {
            var btns = doc.cbSaveButtons = doc.createXULElement("box");

            var btn = btns.appendChild(doc.createXULElement("button"));
            btn.className = "dialog-button";

            var btn1 = btn.cloneNode(false);
            btn1.label = "Сохранить как";
            btn1.setAttribute("oncommand", "handleCommand(window)");
            btn1.handleCommand = this.cmdf;
            btn.before(btn1);

            btn.label = "Сохранить в";
            var popup = btn.appendChild(doc.createXULElement("menupopup"));
            popup.setAttribute("oncommand", "handleCommand(event.target)");
            popup.handleCommand = this.cmd;

            for(var lab in this.data) {
                var menuitem = popup.appendChild(doc.createXULElement("menuitem"));
                menuitem.label = lab;
     

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 05-03-2020 18:35:59

Vitaliy V.
А, теперь понял, спасибо.
То есть отступ и box-shadow должны были остаться.

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 05-03-2020 17:43:38

Vitaliy V. пишет

3. добавь в свой стиль сюда
#BMB_bookmarksPopup menupopup{
border: none !important;
background: none !important;
}

:/ разве не
#BMB_bookmarksPopup menupopup[placespopup=true] {
    padding-inline-start: 0 !important;
}

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 05-03-2020 12:58:13

Andrey_Krropotkin пишет

не хочет работать
не хочет изменяться

Это баг.

Сustom Buttons » Custom Buttons » 04-03-2020 09:31:59

solombala пишет

ДА, а продолжить  здесь можно? В смысле, еще какой аддон добавиться...

Конечно можно. Даже непонятно откуда могло взяться сомнение.

dezhnev пишет

через attributesInspector.js ничего найти не могу, где ужать, где уменьшить, где убрать

Деревья. Вот такой, например, стиль вроде соответствует.
Сверху — предположительно твои один, два, три,
снизу — попытка симуляции того, что уже есть на картинке.
[spoiler][/spoiler

Выделить код

Код:

@-moz-document url(chrome://browser/content/places/bookmarksSidebar.xhtml) {

    treechildren {
        margin-left: -2px !important;
    }
    treechildren::-moz-tree-indentation {
        width: 2px !important;
    }
    treechildren::-moz-tree-image {
        margin-right: -1px !important;
    }

    /************************************************/

    treechildren::-moz-tree-row {
        min-height: 18px !important;
    }
    treechildren::-moz-tree-twisty {
        width: 0 !important;
        padding: 0 !important;
    }
}

Board footer

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