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

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

Сustom Buttons » Custom Buttons » Сегодня 19:16:49

«Merge Day!». Скину, пожалуй, свой расклад.

custom_buttons-0.0.5.9.0.1-fx.xpi
Рестарт, как всегда, нужен, хоть это нигде и не отображается в интерфейсе.
[spoiler=Конфигурационный код][code]//
try {(code => {
    var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
    var jsval, evl = true, re = e => Cu.reportError(e), imp = name => {try {
        return Cu.import(`resource://gre/modules/addons/${name}.jsm`, {});
    } catch(ex) {}}
    if ((jsval = imp("AddonSettings"))) {
        jsval.AddonSettings = {ADDON_SIGNING: false, REQUIRE_SIGNING: false, ALLOW_LEGACY_EXTENSIONS: true};
        try {evl = jsval.eval("this") === jsval;} catch(ex) {evl = false;}
    }
    var jsvals = ["XPIProvider", "XPIInstall"].map(imp).filter(i => i);
    jsvals[0].AddonSettings && lockPref("extensions.allow-non-mpc-extensions", true);
    jsvals[0].signaturesNotRequired = true;

    if (evl) return jsvals.forEach(jsval =>

Сustom Buttons » [CB]Toggle Restartless Add-ons » 21-06-2018 19:15:23

Infocatcher
И снова! Может так

Выделить код

Код:

        //let rawAddon = g.XPIDatabase.syncGetAddon(function(rawAddon) {
        let rawAddon = Array.from(g.XPIDatabase.addonDB.values()).find(function(rawAddon) {

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 11-06-2018 22:06:03

xrun1
Добавлю: в самом крайнем случае,
можно попробовать, например, как-то так
[spoiler][code]box#library-animatable-box {
    --script:(async url => {

        var defaultFavicon = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABchMtebZPU+HWZ1+5tk9PJZ47Rk2uQ0r9xltTkd5vY83me2v96ndr5bZLT+WaN0PBiic6eXITLNgAAAAAAAAAAbZPUzqXH8/+rzPj/j7Dj/5O06P+hxPH/rc73/7HS+/+bve7/cpfV/42x5P+myPD/oMLt/26U1OoAAAAAAAAAAIKo4PO62/v/utr7/7DR+f+01fz/u9z8/77e/f+11vv/kLPn/26U1P9xldX/dZnW/3SY1f9njtDhXITLBwAAAACNseT/vt79/77e/f+93f3/vt79/77e/f+93f3/nb/v/3KX1f+Ut+f/udr6/77e/f+83fz/m73r/1yEy2sAAAAAjrHk/77e/f++3v3/vt79/77e/f++3v3/uNn8/5q87f9zl9f/cJTU/3WZ1v91mdb/dZnW/3CU1P9dhcxpAAAAAIqu4vq83Pz/vt79/77e/f++3v3/vt79/7TV/P+Dp9//dJnX/7HS9v++3v3/vt79/77e/f+y0/f/dZvY6gAAAAB4ndnbsdH2/6fI8f+pyvX/t9n6/77e/f+21/v/jrHl/2mQ0v9vlNT/dZnW/3WZ1v91mdb/c5fV/2SLzr0AAAAAXITLbHab2fd1mtridJnXq5Cz6P+21vn/vNz8/6/R+v+Dp9//ia3j/7jY+f++3v3/vt79/7XV+P96oNvqAAAAAAAAAAAAAAAAAAAAAAAAA

Обсуждение расширений » uBlock » 08-06-2018 07:06:43

Coroner пишет:

uBlock, будучи включенным, принудительно устанавливает параметр network.http.speculative-parallel-limit в значение 0

Не совсем так.

В настройках uBlock, там, где «Приватность», есть галка
«Отключить предзагрузку для предотвращения подключений для заблокированных запросов».

В зависимости от её состояния, uBlock, через WebExtensions API,
обращается к chrome.privacy.network.networkPredictionEnabled.["clear"/"set"]()

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

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 08-06-2018 07:04:56

momo2000 пишет:

А как поменять иконку закладки

Есть замечательный css-хак от Vitaliy V.
Иконка, жёско заданная через атрибут, задвигается в сторону.
На освободившемся месте показывается своя, фоновая.

Сustom Buttons » Обсуждение кнопок CB » 07-06-2018 06:02:18

Coroner пишет:

окно ввода текста появляется, но новая вкладка с поиском не открывается

Что при этом пишет Консоль браузера (Ctrl+Shift+J) ?

На странице about:support
    - открывается ли новая вкладка с поиском?
    - что написано в графе «Многопроцессные окна»?

Каково значение настройки extensions.webextensions.remote ?

Сustom Buttons » Custom Buttons » 30-05-2018 08:26:46

Garalf пишет:

Dumby если будет время.... Экспорт в HTML файл в контекстном меню закладок
Удобная вещь. Тут каждую папку закладок отдельно копировать можно.[spoiler][code]/*Initialization Code*/
//-------------------- Экспорт в HTML файл в контекстном меню закладок
//Источник - https://github.com/ardiman/userChrome.js/blob/master/exporthtmlfolder/ExportHTMLFolder.uc.xul
(function () {

function ImageConverter(imageURL) {
       this.imageURL = imageURL;
       this.channel = Services.io.newChannel(imageURL, null, null);
       this.channel.asyncOpen(this, null);
}
ImageConverter.prototype = {
       imageURL : "",
       channel : null,
       bytes : [],
       stream : null,
       Database64 : null,
       iscompleted : false,
       QueryInterface : function (iid) {
              if (!iid.equals(Components.interfaces.nsISupports) &&
                  !iid.equals(Components.interfaces.nsIRequestObserver) &&
                  !iid.equals(Components.interfaces.nsIStreamListe

Сustom Buttons » [CB]Toggle Restartless Add-ons » 30-05-2018 08:23:37

Infocatcher
Спасибо, забрал.

Надо будет в addons4.js в CustombuttonsButton.prototype
добавить методы enable и disable.
Надеюсь просто пустых функций (без возвращения promise)
будет достаточно.

Наблюдение: если кнопка расположена на панели вкладок,
то, svg'шки в меню не слишком хорошо видны.
Win7, Nightly, чистый профиль, дефолтная тема, скриншот.

Сustom Buttons » [CB]Toggle Restartless Add-ons » 28-05-2018 12:37:23

Infocatcher
Опять сломали. Может так

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

Выделить код

Код:

function setNewDisabled(addon) {
    var newDis = getNewDisabled(addon);
    var oldDis = addon.userDisabled;
    try {
        if(addon.hidden && !addon.__lookupSetter__("userDisabled")) // Firefox 62+
            throw 0;
        addon.userDisabled = newDis;
    }
    catch(e) { // Error: Cannot disable hidden add-on firefox@getpocket.com

Сustom Buttons » Custom Buttons » 28-05-2018 12:36:02

Garalf пишет:

И если можно, еще одну полезную кнопку поправить

:/
[spoiler][code](obj => {
    this._handleClick = () => obj.popup.openPopup(this, "after_start");
    this.onmouseenter = e => this.tooltipText = this.label +
        "\nЛ: Меню кнопки\nП: CB меню\n\nПапка для экспорта:\n" + (obj.path || "Не установлено.");
    addDestructor(reason => reason == "delete" && Services.prefs.clearUserPref(obj.pref));
})({
    get popup() {
        var popup = document.createElement("menupopup");
        popup.setAttribute("oncommand", "linkedObject[event.target.value]();");
        popup.linkedObject = this;
        var keys = ["label", "value", "image"];
        for(var data of [
            ["Экспорт закладок в HTML-файл", "export", "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////8AAAAAAAAAAAAAAAAA

Сustom Buttons » Custom Buttons » 25-05-2018 21:51:36

Garalf пишет:

А этот код слабо поправить?)

Править там особо нечего. dblCtrlSend() работает и на сегодняшней 62 (Win7).
quickTranslate() тоже работает, но что они делают совместно — не смог понять.
А setTimeout(function() dblCtrlSend(), 1000); — ну так «мне без сахара»,
раз работало, то просто замени на setTimeout(dblCtrlSend, 1000);

unter_officer пишет:

Исправьте пожалуйста кнопку под [firefox] 60+

Там создаётся элемент "statusbarpanel", который
больше не представляет из себя ничего особенного.
Попробуй создавать что-нибудь другое, например, "label",
и тогда, соответственно, вместо tabCounter.label = ...
tabCounter.value = ...

func4ptch4 пишет:

У меня вопрос по этой кнопке, если его и реально восстанивить, то сколько примерно он проработает?
Имеет ли смысл его переделывать или легче удалить? если там не знаю в 62 версий он сломается.

Н

Сustom Buttons » Custom Buttons » 23-05-2018 07:54:23

func4ptch4
:/
[spoiler][code]({
    style: `
        tab.tabbrowser-tab[inbookmarks] .tab-text.tab-label {
            text-decoration: underline !important;
            /*background-color: yellow !important;*/
        }
    `,
    addProcessingInstruction(add) {
        if (add) this.pi = document.insertBefore(
            document.createProcessingInstruction(
                "xml-stylesheet",
                `type="text/css" href="data:text/css,${
                    encodeURIComponent(this.style.trim())
                }"`
            ), document.firstChild);
        else
            this.pi.remove();
    },
    init() {
        this.addProcessingInstruction(true);
        this.setAttributeForAllTabs(true);
        gBrowser.addTabsProgressListener(this);
        PlacesUtils.bookmarks.addObserver(this);
        addDestructor(this.destroy, this);
    },
    destroy() {
        this.addProcessingInstruction(false);
        this.setAttributeForAllTabs(false);
        gBrowser.re

Сustom Buttons » Обсуждение кнопок CB » 22-05-2018 18:23:33

drage2 пишет:

_identityIcon

_identityIcon так _identityIcon
[spoiler][code](identBox => {
    var tip = "Some tooltip text";

    var icon = gIdentityHandler._identityIcon;
    addEventListener("mouseenter", () => icon.setAttribute("tooltiptext", tip), false, icon || 1);
    addDestructor(() =>
        icon.setAttribute("tooltiptext", gNavigatorBundle.getString("identity.icon.tooltip"))
    );
    var listener = {
        handleEvent(e) {
            e.ctrlKey || e.shiftKey || e.detail > 1 || this[e.type](e);
        },
        click(e) {
            if (e.button || !identBox.contains(e.target)) return;
            e.stopPropagation();
            this.bookmarkCurrentPage(gBrowser.selectedBrowser, true);
            identBox.setAttribute("style", "background:red;");
            setTimeout(() => identBox.removeAttribute("style"), 300);
        },
        contextmenu(e) {
            e.preventDefault();
            var url = gBrowser.currentURI.spec;
            BrowserPageInfo(u

Сustom Buttons » Обсуждение кнопок CB » 21-05-2018 08:15:00

drage2 пишет:

Эта 60-запарила....PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksMenuFolderId); -не срабатыват

:/

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

Выделить код

Код:

(self.bookmarkCurrentPage || (self.bookmarkCurrentPage = eval(`(${
    PlacesCommandHook.bookmarkPage.toSource()
        .replace("async", "$& function")
        .replace("unfiledGuid", "menuGuid")
})`).bind(PlacesCommandHook)))(gBrowser.selectedBrowser, true);

Сustom Buttons » Обсуждение кнопок CB » 20-05-2018 09:07:21

sonyas75 пишет:

этот код на 60 ЕСР у меня завоевал весь мир! она, кнопка эта, начала копировать сама себя, клоны начали плодить клонов

Звучит так, как если бы код попал во вкладку Инициализация.
Но он явно педназначен для вкладки Код.

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

Выделить код

Код:

custombuttons.cloneButton(self, true);
var newButtonLink = custombuttons.makeButtonLink("update", self.nextSibling.id);
var params = custombuttons.cbService.getButtonParameters(newButtonLink).wrappedJSObject;

params.name = gBrowser.selectedTab.label;   
params.image = gBrowser.selectedTab.image || "chrome://global/skin/icons/Portrait.png";
params.code = `loadURI("${gBrowser.currentURI.spec}");`;
params.initCode = 'document.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon")\n\t'
    + '.style.cssText = "width: 16px; height: 16px;";';

custombuttons.cbService.installButton(params.wrappedJSObject = params);


drage2 пишет:

Даешь, эту кнопку(дв.клик)

Подробностей снова нет. Может так попробуй
[sp

Сustom Buttons » Обсуждение кнопок CB » 19-05-2018 09:39:48

Garalf пишет:

Можно ли восстановить работоспособность кнопки Autocopy+3 в FF60+

Не, «+3», для меня слишком заморочно.
Решил попытаться просто Autocopy сделать, так не уверен,
что пригодно к использованию получилось.
Впрочем, можешь попробовать
[spoiler][code]custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EAutocopy%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAgEAAcHBAAIBwQACAcEAAgHBAAIBwQACAcEAAgHBAAIBwQACAQDAQEAAAAAAAAAAAAAAAADAgADAAAAACcVAB+qXAC3vGsB4LlqAd26agHeumoB3rpqAd66agHeumoB3rhoAN26agHgs2IAxTceAC8AAAAAAAEAAAIBAAQAAAQAoFcApv2zVv/+1qn8/9Of///Uov//1KL//9Si///Uov//1KL//9en//7Vpfz9t2L/tGMAvwEAAQAAAAAAKBUAH6FXAKnPcgD12IYf/dyMJ/3biiP924sk/duLJf3biyX924sm/dqJIv3im0P9/du1/P7Xqv+7agHdCQUACAAAAQCrXgCz+69R//TFj/vxvn

Сustom Buttons » Обсуждение кнопок CB » 16-05-2018 17:10:48

Garalf пишет:

И еще вопрос. Не работают костыли в сборке FF61b4. Использовал последний config.js из твоего поста и custom_buttons-0.0.5.8.9-fixed8.
Причины у меня?

Нет, костыли, надеюсь, работают и в сборке FF61b4, и в сегодняшней Nightly.
И нет, ни в коем случае, причины не у тебя. Причины совсем в другом.
[spoiler]Костыли всего-лишь навсего снимают некий искусственный принципиальный
запрет на установку и невыключение неподписанных и Legacy расширений.

Этот запрет существует для официальных Release и Beta сборок,
и не существует для официальных Nightly, Developer и «Unbraindead» билдов.

Шестьдесят первая версия ознаменовалась эпическим эпизодом
документального сериала «Firefox Quantum. История предательства.»
А именно: лисице вырезали сердце — поддержку оверлейных расширений.

chrome.manifest для оверлейных расширений игнорируется.
Директива overlay не исполняется.
Это заложено в тёмных глубинах С++ кода, и никакой
конфиг-неконфиг.js ничего с этим поделать не сможет.

custom

Сustom Buttons » Обсуждение кнопок CB » 15-05-2018 22:36:35

Garalf
Значит у тебя со стилем что-то не так.

Кстати, сейчас попробовал следующим образом:
выключил стиль и разместил после строки, где return; строку e.preventDefault();
Разворачивание/нормализация — не происходит, перетаскивание окна — происходит.

Сustom Buttons » Обсуждение кнопок CB » 15-05-2018 19:17:54

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

Ну вот, например, чисто от балды

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

Выделить код

Код:

(selectors => addEventListener("dblclick", e => {
    if (
        e.button || e.ctrlKey || e.shiftKey || e.altKey
        || !e.originalTarget.matches(selectors)
    )
        return;
    var hbuTabs = [], param = {animate: false};
    gBrowser.selectedTab = gBrowser.tabs[0];
    for(var tab of gBrowser.visibleTabs.reverse())
        //if (tab.pinned) break; else
        gBrowser._hasBeforeUnload(tab)
            ? hbuTabs.push(tab)
            : gBrowser.removeTab(tab, param);
    for(tab of hbuTabs)
        gBrowser.removeTab(tab, param);
}, false, document.getElementById("TabsToolbar") || 1))("" + [

    "#tabbrowser-tabs [class*=scrollbox]",
    "#TabsToolbar > toolbarspring",
    "#TabsToolbar",
]);

Сustom Buttons » Custom Buttons » 15-05-2018 04:18:04

sonyas75
Замени gBrowser.tabContainer.mTabstrip на что-нибудь другое,
например на gBrowser.tabs[0].boxObject.parentBox

Сustom Buttons » [CB]Показать или спрятать пароль в окошке вода двойным кликом мыши » 14-05-2018 21:47:47

Ну, я попробовал процитировать контентскую часть
под многопроцессность, вроде работает.
[spoiler][code]((script, ID, NSVO) => {
    var nsvo = eval(NSVO), u = code => "data:," + encodeURIComponent(code);
    if (!(ID in nsvo)) {
        var processURL = u(script.replace(/%ID%/g, ID).replace("%NSVO%", NSVO));
        Services.ppmm.loadProcessScript(processURL, true);
        nsvo[ID].processURL = processURL;
        Services.mm.loadFrameScript(nsvo[ID].frameURL = u(`${NSVO}["${ID}"].init(this);`), true);
    }
    addDestructor(reason => {
        if (reason[5] != "e" || !(ID in nsvo)) return;
        Services.mm.removeDelayedFrameScript(nsvo[ID].frameURL);
        Services.mm.loadFrameScript(u(`${NSVO}["${ID}"].destroy(this);`), false);
        Services.ppmm.removeDelayedProcessScript(nsvo[ID].processURL);
        Services.ppmm.loadProcessScript(u(`${NSVO}["${ID}"].forget();`), false);
    });
})(`\
    (nsvo => nsvo["%ID%"] = {
        dblclick({target}) {
            if (target.hasAt

Сustom Buttons » Обсуждение кнопок CB » 14-05-2018 21:46:49

drage2 пишет:

окно клацает

Стиль хоть пытался регистрировать?

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

Выделить код

Код:

#TabsToolbar {
    -moz-window-dragging: no-drag !important;
}

Сustom Buttons » Custom Buttons » 14-05-2018 21:45:15

Новая версия конфигурационного кода.
Причина: на бете 61 не работали WebExtensions «системы paxmod».
[spoiler][code]//
try {(code => {
    var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
    var jsval, evl = true, re = e => Cu.reportError(e), imp = name => {try {
        return Cu.import(`resource://gre/modules/addons/${name}.jsm`, {});
    } catch(ex) {}}
    if ((jsval = imp("AddonSettings"))) {
        jsval.AddonSettings = {ADDON_SIGNING: false, REQUIRE_SIGNING: false, ALLOW_LEGACY_EXTENSIONS: true};
        try {evl = jsval.eval("this") === jsval;} catch(ex) {evl = false;}
    }
    lockPref("extensions.allow-non-mpc-extensions", true);
    var jsvals = ["XPIProvider", "XPIInstall"].map(imp).filter(i => i);

    if (evl) return jsvals.forEach(jsval => {try {jsval.eval(code);} catch(ex) {re(ex);}});

    var sl = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader);

Сustom Buttons » [CB]Memory Monitor » 11-05-2018 14:16:58

suz191
Ну, я попробовал просто вывести в адресную строку лейбл,
отображающий расход памяти. (типа как на странице about:performance)

Вроде что-то показывает на Firefox 60, и, даже, на Nightly 62 (2018-05-10).
[spoiler][code]setTimeout(url => {
    var mode = "rss"; // "rss" - Resident Set Size, "uss" - Unique Set Size
    var interval = 1500; // ms

    var before = null;
    var parent = before ? before.parentNode : document.getElementById("page-action-buttons");
    var lab = parent.insertBefore(document.createElement("label"), before);

    var nsvo = Cu.import(url, {});
    if (!("labels" in nsvo)) {
        nsvo.labels = new Set();
        var mb = 1024 * 1024, gb = mb * 1024;
        var format = num => num < gb
            ? Math.round(num / mb) + "MB"
            : (Math.round(100 * num / gb) / 100).toFixed(2) + "GB";
        var updateLabels = bytes => {
            if (bytes) for(var lab of nsvo.labels)
                lab.setAttribute("value", format(bytes));
       

Сustom Buttons » [CB]Toggle Restartless Add-ons » 26-04-2018 18:01:01

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

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

Выделить код

Код:

        if(addon.hidden) {
            _log("Let's try set addon.userDisabled using raw hack");
            let g = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {});

            if("XPIDatabase" in g && "updateAddonDisabledState" in g.XPIDatabase) { // Firefox 61+
                let rawAddon = g.XPIDatabase.syncGetAddon(function(rawAddon) {
                    return rawAddon.id == addon.id
                });
                g.XPIDatabase.updateAddonDisabledState(rawAddon, newDis);
            }
            else {
                // See "set userDisabled(val)"
                if("eval" in g) {

Board footer

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