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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

Сustom Buttons » Custom Buttons » Вчера 23:04:17

func4ptch4
Зачем закомментировал css?
Если css не нужен, то лучше убрать две косые перед нулём.

Вообще, я, иногда, приглядываю за ней в ночнушке, на интерес.
Если хочешь попробовать — могу процитировать
[spoiler][code]this.type != "menu" ? this.type = "menu" : (popup => {

    var columns = [
        "¤ ¦ § © « » ¬ ® ° ± µ ¶ — ‘ ’ “ ” • ‰ ‹ › ™",
        "… ≈ ≠ × ✓ ✗ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞",
        "\uD83E\uDD8A \uD83D\uDE0E ⊞ ⊞ ⊞ ⊞ ⊞ ⊞ ⊞"
    ];
    var css = //0&&
    `
        #${_id} menuitem > .menu-text {
            font-size: 22px;
            font-family: Consolas, Rockwell, Verdana;
            text-align: center;
            -moz-appearance: none;
            margin: 0;
            padding: 0 14px;
        }
        #${_id} menuitem > :not(.menu-text) {
            display: none;
        }
        #${_id} > menupopup > arrowscrollbox {
            background-color: menu;
        }
    `.replace(/;/g, " !important;");

    var inserter = {
        get docShell() {
   

Сustom Buttons » Custom Buttons » 20-02-2019 17:55:12

func4ptch4 пишет:

Dumby
https://i.imgur.com/W7RdlAY.png
У всех так? и вообще у меня все время удаляются еще 10 расширений, может кастыли не
правильно поставил на [firefox] 65.0.1? ну которые дают работать с bootstrap и CB...

На чистом профиле тоже самое, CB пашет, зато расширения отваливаются.
Причина только в костылях config.js но что я не так сделал?

Да, подтверждаю, удалось воспроизвести.
Например:
Textmarker — устанавливается (есть id в манифесте),
а Sticky Notes — не устанавливается (нет id в манифесте).

Пока, на скорую руку, добавил такое. Спасибо.

Выделить код

Код:

    Cu.import("resource://gre/modules/addons/XPIInstall.jsm", {})
        .shouldVerifySignedState = addon => !addon.id;

Новости » Вышел Firefox 65.0.1 и Tor Browser 8.0.6 » 16-02-2019 07:05:40

Dufresne
В этой строке extends видишь?

<binding id="tabs-scroll" extends="chrome://global/content/bindings/scrollbox.xml#scrollbox">

Так вот, такого биндинга в Firefox 66+ больше нет (#l6.12), extends'ить нечего.
Если удалить, то, вроде, должно работать.

Сustom Buttons » Custom Buttons » 31-01-2019 19:12:35

Andrey_Krropotkin пишет:

А с richlistbox, listcol и richlistitem то же что изменили?

А причём здесь они? Проблемы с отображением у treecol'ов,
которым в richlistbox'е делать нечего, даже хотя бы исходя из названия.

И вообще как-то наворочено, может будь проще
[spoiler][code]/*
            for(var i = 0; i < list.length; i++) {
            var item = document.createElement("richlistitem");
            var cell = document.createElement("treecol");
            cell.setAttribute("label", list[i].name);
            item.appendChild(cell);
            dialog.document.getElementById("listbox").appendChild(item);
            dialog.document.getElementById("listbox").focus();
            dialog.document.getElementById("listbox").selectAll();
            }
*/
    var box = dialog.document.getElementById("listbox");
    for(var addon of list) box.appendItem(addon.name, "").addon = addon;
    box.focus();

            });
        promise && typeof promise.then == "function" && promise.the

Сustom Buttons » Custom Buttons » 31-01-2019 14:01:34

Andrey_Krropotkin пишет:

В 65 убрали файл chrome://global/content/platformHTMLBindings.xml из которого можно было вывести команды. Сейчас в 65 такое возможно или нет?

Bug 1419091 - Figure out an alternative to the key handling defined with XBL in the platformHTMLBindings.xml files
То есть их зашили в C++. Так что, вряд ли.
Нет, ну можешь попробовать по сети за командами слазать,
типа как-то так (не проверял)

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

Выделить код

Код:

(async () => {
    var url = `${
        AppConstants.SOURCE_REVISION_URL.replace("rev", "raw-file")
    }/dom/xbl/builtin/${
        {win: "win", linux: "unix", macosx: "mac"}[AppConstants.platform] || "unix"
    }/ShortcutKeyDefinitions.cpp`;

    var text = await (await fetch(url)).text();
    var commands = text.match(/cmd_[^"]+/g);

    alert(commands.join("\n"));
})();


Andrey_Krropotkin пишет:

Перестал на на 65 работать вот такой код работы с Clipboard, вроде на 65 с Clipbo

Сustom Buttons » Custom Buttons » 29-01-2019 08:39:04

Garalf пишет:

А куда поместить bootstrap-loader.js? Дописать в config.js?

Да, всё верно, bootstrap-loader.js задуман
как предназначеный быть добавленным в config.js

Coroner пишет:

эти метóды годятся для 65 или нет?

Да, я надеюсь, что обе эти метóды годятся для Firefox 65.
[spoiler]Firefox 63+ — это имеется в виду нижняя граница
совместимости paxmod-варианта, ну то есть,
вроде, должно работать на 63, 64, 65 и 66.

И не будет работать на 62, 61, 60, 59, и.т.д.
Можно, конечно, было бы попробовать расширить диапазон,
но не вижу большого смысла, да и всё равно дальше 60 не сдвинуть.


Firefox 65 — это имеется в виду рубеж, когда нужно
предпринимать какие-то дополнительные действия,

поскольку bootstrap-расширения перестанут работать не потому,
что неподписаны или легаси, а просто потому, что некоторые необходимые
служебные коды высланы из Firefox куда-то в Thunderbird'ьи края.

Иначе говоря, с точки зрения Firefox 65, попытка установить
такое расширение будет в

Сustom Buttons » [CB]Attributes Inspector (для разработчиков) » 28-01-2019 18:47:15

Infocatcher
Bug 1482389 - Convert TreeBoxObject to XULTreeElement
Таким образом слетели коды прокрутки в деревьях.
Сделал пока так, вроде работает
[spoiler][code]                if(_nodePosition >= 0) {
                    /*
                    var tbo = viewer.mDOMTree.treeBoxObject;
                    var cur = tbo.view.selection.currentIndex;
                    var first = tbo.getFirstVisibleRow();
                    var visibleRows = tbo.height/tbo.rowHeight;
                    */
                    if("nsITreeBoxObject" in Components.interfaces) {
                        var tbo = viewer.mDOMTree.treeBoxObject;
                        var visibleRows = tbo.height/tbo.rowHeight;
                    } else {
                        var tbo = viewer.mDOMTree;
                        var visibleRows = tbo.getPageLength();
                    }
                    var cur = tbo.view.selection.currentIndex;
   

Сustom Buttons » Custom Buttons » 28-01-2019 18:24:00

«Merge Date»
Описание исходной концепции (Firefox 63+) здесь.
В коде для конфигурационного файла заменён запускатор,
поскольку рассылка использовавшегося топика прекращена (#l4.31).
[spoiler=config.js][code]//
try {(jsval => {
    var data = {
        MOZ_REQUIRE_SIGNING: false,
        MOZ_ALLOW_LEGACY_EXTENSIONS: true,
        get MOZ_UNSIGNED_SCOPES() {
            return 31; // AddonManager.SCOPE_ALL
        }
    };
    var o = Cu.getGlobalForObject(jsval).Object, {freeze} = o;
    o.freeze = obj => {
        if (Components.stack.caller.filename != "resource://gre/modules/AppConstants.jsm")
            return freeze(obj);
        for(let key in data)
            o.defineProperty(obj, key, o.getOwnPropertyDescriptor(data, key));
        return (o.freeze = freeze)(obj);
 

Сustom Buttons » Custom Buttons » 30-12-2018 14:58:15

Andrey_Krropotkin пишет:

закрывается вкладка и ничего не сохраняется

Ну правильно, документ-то тю-тю.
Можно попробовать сочинить какую-нибудь дичь, типа
[spoiler][code]function saveButtonImage(btn) {
    var remove = gBrowser.removeCurrentTab.bind(gBrowser);
    var promiseTargetFile = async (...args) => {
        var res = await window.promiseTargetFile(...args);
        setTimeout(remove, 0);
        return res;
    }
    var internalSave = eval(`(${window.internalSave})`);
    var save = eval(`(${window.saveDocument})`);

    (saveButtonImage = btn => {
        if (btn.image != "") {
            var tab = gBrowser.selectedTab;
            gBrowser.selectedTab = gBrowser.addTab(btn.image, {
                triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
            });
            setTimeout(function() {
                window.content.document.title = btn.name;
                save(window.content.document);
            }, 2000);
        } else
       

Сustom Buttons » Custom Buttons » 29-12-2018 22:20:41

Andrey_Krropotkin пишет:

не в алфавитном порядке

Ну, первое, что приходит в голову. Или ты что-то хитрое задумал?

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

Выделить код

Код:

var visibleCBbuttons = [...document.querySelectorAll('[cb-mode]')];
var paletteCBbuttons = [...custombuttons.palette.querySelectorAll('[cb-mode]')];
var allCBbuttons = visibleCBbuttons.concat(paletteCBbuttons);

var gn = btn => btn.getAttribute("label") || "Без названия";
allCBbuttons.sort((a, b) => gn(a).localeCompare(gn(b)));

gBrowser.selectedTab = gBrowser.addTrustedTab(
    "data:text/plain;charset=utf-8," +
    encodeURIComponent(allCBbuttons.map(gn).join("\n"))
);


drage2 пишет:

а если в промежутке папка ?

Тогда значит... в промежутке папка.

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

Выделить код

Код:

var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
["custombuttons", "backup", "buttonsoverlay.xul.bak"].forEach(file.append);
file.reveal();

Поддержка пользователей » Попытка перехода на современные версии Firefox » 28-12-2018 05:10:25

Coroner пишет:

Если решение обнаружится — сделайте одолжение — сообщите, пожалуйста. Тоже в таком заинтересован.

Скрась ожидание

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

Выделить код

Код:

menubar#main-menubar > menu#edit-menu > label {
    -moz-binding: url('data:text/xml,\
        <bindings xmlns="http://www.mozilla.org/xbl"><binding id="newtab"><implementation>\%0A\
            <constructor>aboutNewTabService.newTabURL="file:///D:/bla.html"</constructor>\%0A\
        </implementation></binding></bindings>'
    );
}

Сustom Buttons » Custom Buttons » 26-12-2018 15:58:58

Andrey_Krropotkin пишет:

Теперь по 64 - не работает
- var refNode = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'highlight'); пишет не найден, чем можно заменить?
- у  кнопки search-go-button убрали anoid. Если раньше было var btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button");
  btn.setAttribute("hidden", "false");, то как теперь сделать стрелку всегда видимой?

highlight search-go-button

Andrey_Krropotkin пишет:

в командной строке не видно контекстного меню

Для Firefox 64+, если приемлимо, что в linkset'е останется link,
можно просто добавить куда-нибудь в середину init()

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

Выделить код

Код:

        "insertFTLIfNeeded" in MozXULElement && MozXULElement
            .insertFTLIfNeeded("toolkit/main-window/editmenu.ftl");


Karn пишет:

А может можно парой строчек добавить и

Сustom Buttons » Custom Buttons » 26-12-2018 00:03:47

Andrey_Krropotkin пишет:

вопрос по 63 Пытаюсь набросать кнопку - открыть ссылку в сайдбаре, что не получается. С menuitem и toolbarbutton понятно, а вот с browser не понятно. Как его явно объявить? Не могли Вы простеькую набросать кнопочку?

Side View что ли пишешь :o? А кнопочку набросать,
ну могу попробовать простенькую, в смысле неполноценную.
[spoiler][code](id => {
    var label = "CB Sidebar Loader";
    var url = "chrome://browser/content/webext-panels.xul?" + id;
    var icon = "chrome://devtools/skin/images/dock-side-left.svg";
    var defaultURL = "data:text/html;charset=utf-8,<center><h1>Заглушка</h1></center>";
    var currentURL;

    var e = (name, attrs, node, append) => {
        var elm = document.createElement(name);
        for(var a in attrs) elm.setAttribute(a, attrs[a]);
        append ? node.append(elm) : node.before(elm);
        return elm;
    }
    var menuitem = e("menuitem", {
        labe

Сustom Buttons » Custom Buttons » 24-12-2018 17:46:34

Karn пишет:

добавить в кнопку Autocopy работающую в 63+, функцию замены выделенного текста вставляемым по СКМ

Ну, если настройка middlemouse.paste выключена,
то можно попробовать заменить handleEvent.

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

Выделить код

Код:

    //handleEvent(e) {e.button || this[e.type](e);},
    handleEvent(e) {
        if (e.button != 1) return e.button || this[e.type](e);
        var ed = e.type[5] == "d" && !e.ctrlKey && e.target.editor;
        if (
            ed && ed instanceof Ci.nsIEditor &&
            ed.canPaste(ed.selectionController.SELECTION_NORMAL)
        )
            e.preventDefault(),
            ed.paste(ed.selectionController.SELECTION_NORMAL);
    },


Karn пишет:

сделать отдельной кнопкой функцию сохранения изображений без запроса по двойному ПКМ на них

Так в «OLD Autocopy» ядро для этого, вроде, вполне рабочее.
Если страница превентит контекстое меню, то придётся кликать с зажатым Shift.
[spoiler]

Выделить код

Код:

addEventListener("contextmenu", {
    handleEvent(e

Сustom Buttons » Custom Buttons » 23-12-2018 21:13:57

Andrey_Krropotkin пишет:

ссылается в консоли на nsPIPlacesDatabase

Его втащили в nsINavHistoryService. Вот так, вроде, алертится

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

Выделить код

Код:

var statement = PlacesUtils.history.DBConnection
    .createStatement("SELECT count(fk) FROM moz_bookmarks");

statement.executeStep();
var bkmcnt = statement.getInt32(0);
statement.finalize();

alert("Общее количество закладок=" + bkmcnt);


Andrey_Krropotkin пишет:

код ссылается на нехватку аргументов

Вау, и здесь сунули свой triggering principal :usch:.
Читаем idl'ку. У меня вот так записывает
[spoiler]

Выделить код

Код:

var file = Services.dirsvc.get("TmpD", Ci.nsIFile);
file.append("bla.txt");

makeWebBrowserPersist().saveURI(
    mak

Сustom Buttons » Custom Buttons » 23-12-2018 14:57:05

Andrey_Krropotkin пишет:

Dumby Вы можете исправить свою старую кнопку Консоль браузера для 63?

OK, попробую
[spoiler][code]({
    title: "Консоль браузера",
    url: "chrome://devtools/content/webconsole/index.html",
    icon: "chrome://devtools/skin/images/tool-webconsole.svg",
    init() {
        var trg = document.getElementById("browser");
        trg && addEventListener("DOMContentLoaded", this, false, trg);
        var id = "viewBrowserConsoleSidebar";

        var menuitem = this.element("menuitem", {
            label: this.title,
            id: "menu_browserConsoleSidebar",
            oncommand: `SidebarUI.toggle("${id}");`
        }, document.getElementById("viewSidebarMenu"));

        var btn = this.element("toolbarbutton", {
            type: "checkbox",
            label: this.title,
            id: "sidebar-switcher-browserConsole",
            oncommand: `SidebarUI.show("${id}");`,
            class: "subviewbutton subviewbutton-iconic"
        });
   

Сustom Buttons » Custom Buttons » 18-12-2018 17:05:21

Andrey_Krropotkin пишет:

найти не могу

Ну, например, Attributes Inspector'ом посмотри (при несвёрнутом Firefox).

Сustom Buttons » Custom Buttons » 18-12-2018 14:38:09

drage2 пишет:

какого теперь  в этой версии надломилась?

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

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

Выделить код

Код:

if(e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey) {
e.preventDefault();
menu.showPopup(self, -1, -1, "popup", "bottomleft", "topleft");
}


Andrey_Krropotkin пишет:

вообще пропадает из интерфейса, а в консоли ни одной ошибки) или сделать что нибудь на подобие

Пропадает потому, что toolbarbutton[type="menu-button"] в Firefox больше нет.
Может что-нибудь более примитивное подойдёт, типа
[spoiler]

Выделить код

Код:

this.type != "menu" ? this.type = "menu" : (popup => {
    var inserter = {
        get docShell() {
            delete this.docShell;
            return this.docShell = "docShell" in document
                && document.docShell instanceof Ci.nsIDocShell
                ? document.docShell : window.docShell;
        },
        get insertText() {
            delete this.insertText;
            return this.insert

Сustom Buttons » Custom Buttons » 17-12-2018 23:39:01

Karn
Ох, далёк я от всех этих видосов, у меня вообще
скрипты запрещены, так что я как-бы не в теме.
Могу попробовать набросать что-нибудь с твоих слов.

Клик по пункту меню не левой кнопкой — выбор папки,
если не работает, надеюсь найдешь где удалить блок menuitem.onauxclick
[spoiler][code](popup => addEventListener("popupshowing", {
    handleEvent(e) {
        if (e.target != popup || this.shouldHide) return;
        var menuitem = document.createElement("menuitem");
        for(var args of Object.entries({
            class: "menuitem-iconic",
            id: "context-sendlinktoytdl",
            label: "Отправить в youtube-dl",
            oncommand: "linkedObject.oncommand();",
            image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAc0lEQVQ4jWNgGB7gvqdtwANP+y8PvOz/E4Pve9m/v+9pG4AwwMv+PLGakQw5DzcAm4Ifty//f5IQhtcQvAb8/fP1/++Pr/6/bKog3wAY/rBuKWUGfNq5kXwvvO5tJs8LP25f/v80O5G4QKQ4GilOSEMbAAAJoGH0pNGWEwAAAABJRU5ErkJggg=="
        }))
            m

Сustom Buttons » Custom Buttons » 17-12-2018 18:20:34

drage2 пишет:

какую поганку завернули в FF64 ?

В FF64, здесь, никакую. showPopup() выпилен в FF61.
Остальное — создай кнопку и убедись что работает.
[spoiler][code]this.append(MozXULElement.parseXULToFragment(`

    <menupopup context="bla">
        <menuitem label="menuitem 1"/>
        <menuitem label="menuitem 2"/>
        <menuitem label="menuitem 3"/>
    </menupopup>

    <menupopup id="bla">
        <menuitem label="context"/>
    </menupopup>
`));

var menu = this.firstChild;

this.oncontextmenu = e => e.target != this ? menu.hasAttribute("context")
    : e.ctrlKey || e.shiftKey || e.altKey || e.metaKey || (
        e.detail != 1 ? menu.hidePopup() : !!menu.openPopup(this, "after_start")
    );


custombuttons.alertSlide1 = function(sTitle) {
var as = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService);
as.showAlertNotification('chrome://global/skin/icons/information-16.png', "", sTitle, false, "", null);
setTimeout(()

Сustom Buttons » Custom Buttons » 14-12-2018 16:51:40

Karn пишет:

посылать в командную строку Windows

Если посылать в командную строку Windows, то, говорят,
могут возникнуть проблемы, если ссылка содержит символы «&».

Попробуй сначала напрямую вызывать youtube-dl.exe с аргументами.
Создай кнопку с таким содержимым вкладки Код.
Копируешь ссылку, жмёшь кнопку.

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

Выделить код

Код:

var url = gClipboard.read();
if (!url.startsWith("https://www.youtube.com/watch?")) return;

var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(FileUtils.File(String.raw`D:\YouTube\youtube-dl.exe`));

var args = ["--no-check-certificate", "-f", "bestvideo+bestaudio", url];
process.runw(false, args, args.length);


А если всё-таки нужно вызывать именно через cmd.exe, тогда попробуй
с добавлением к адресу пробела. Надеюсь youtube-dl воспримет это адекватно.
[spoiler]

Выделить код

Код:

var url = gClipboard.read();
if (!url.startsWith("ht

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 13-12-2018 21:45:09

vitalii201 пишет:

64

Точно, 64 же. Мне чего-то казалось это дело моложе.

Сustom Buttons » Custom Buttons » 13-12-2018 06:40:10

Garalf пишет:

работает на FF60+, но на FF64 перестала работать

Можно попробовать заменить this.cm.doCommand на
(win.docShell || win.document.docShell).doCommand

Сustom Buttons » Custom Buttons » 11-12-2018 08:43:58

Karn пишет:

Не знаете в чём проблема?

Конечно нет, откуда?
Могу ещё раз пересказать, с диагностическим уклоном.
[spoiler]В папке, где лежит firefox.exe, есть папка defaults, а в ней папка pref.
В этой папке, рядом с channel-prefs.js, создаём файл config-prefs.js

Название не столь существенно, а вот расширение должно быть js,
то есть config-prefs.js, а не какой-нибудь config-prefs.js.txt

Важно: кодировка должна быть без BOM, иначе работать не будет.

Убеждаемся, что все три строки на месте и сохраняем.

Выделить код

Код:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");
pref("general.config.sandbox_enabled", false);

Затем, в папке, где лежит firefox.exe, создаём файл config.js
Кладём в него эти две строки и сохраняем.

Выделить код

Код:

//
Cu.reportError("CONFIG.JS TEST");

Перезапускаем Firefox и открываем Консоль браузера (Ctrl+Shift+J).
Там, в самом начале, смотрим, появилось ли наше сообщение (примерно [url=https://s15.directupload.net/images/181211/n

Сustom Buttons » Custom Buttons » 10-12-2018 23:36:10

Dumby пишет:

На Firefox 65 всё будет немного иначе.

Да, из Firefox 65 вырезали аддон-менеджерские коды
обслуживавшие bootstrapped extensions, и теперь и на этот
последний вид расширений Наследия лиса смотрит бараном.
Таким образом — новый расклад.

Код для конфигурационного файла. Состоит из двух частей.
Часть 1:
  Антиподписячество и разрешение на paxmod'ы (aka WebExperiment).
  Код упрощён до уровня перестановки настроек и флагов. Что-то вроде правки omni.ja
  Примечания:
    1. Настройка jsloader.shareGlobal должна быть в дефолтном значении true.
    2. Размещение каких-либо других кодов перед этим строго не рекомендуется.
        Пусть он исполнится первым, а затем уже все остальные (если есть).
        Игнорируйте, если точно знаете что делаете.
    3. У всего неподписанного в man

Board footer

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