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

Вы можете получить техническую поддержку и просто поболтать в jabber-конференциях Mozilla Россия: support@conference.mozilla-russia.org — для решения проблем с программами Mozilla, talks@conference.mozilla-russia.org — для общения на свободные темы.

Сustom Buttons » Custom Buttons » 17-02-2018 14:25:25

Andrey_Krropotkin пишет:

Тогда как сделать, чтобы год стоял впереди дня и месяца?

Без понятия. Но, как сказал оккамс, простор открыт

Выделить код

Код:

alert(
    new Date().toLocaleString("af").slice(0, 10).replace(/-/g, ".")
);

Сustom Buttons » Custom Buttons » 17-02-2018 00:19:23

Andrey_Krropotkin пишет:

Выделить код

Код:

var time = time + '. ' + date.toLocaleTimeString().replace(/:/g, "·");

Должен выводить как пример 16.02.2018, а на на F57 выводит 16.02.2018. 22·29·38

:o:o:o

Сustom Buttons » Custom Buttons » 16-02-2018 19:09:43

intersk
Ну, если нужно просто 9:51, то режем как-нибудь иначе, типа

Выделить код

Код:

self.timer = setInterval(() => self.label = new Date().toLocaleTimeString().slice(0, -3), 1000);

А если нужно благородное 09:51, то можно указать локаль, например авторскую

Выделить код

Код:

self.timer = setInterval(() => self.label = new Date().toLocaleTimeString("lv-LV").slice(0, -3), 1000);

Обсуждение расширений » Extended Link Properties » 11-02-2018 17:33:25

Infocatcher
А у меня наблюдается ещё и такой баг от реализаторов технологии WebExtensions.
[spoiler]Link Properties Plus WE переведён в основной процесс, то есть e10s выключен,
или включён, но extensions.webextensions.remote = false

При открытии окна «Свойства ссылки» и последующего его перетаскивания,
ресайза и закрытия, не сохраняются позиция и размер окна.

То есть вызов browser.storage.local.set() из листенера на событие beforeunload
не приводит ни к какой записи.

Пробовал через browser.runtime.sendMessage()
отправить сообщение в background-окно, так до beforeunload сообщение приходит,
а из листенера — уже не приходит.
Изменение при добавлении листенера { once: true, capture: true } не помогает.

В общем, сделал так, и, вроде, всё сохраняется:
В properties.js
[code]browser.windows.getCurrent().then(function(win) {
    if(win.type != "popup")
        return;

    // Workaround for empty window with disabled e10s mode
    browser.windows.update(win.id, {
        heigh

Firefox » Ищу расширение для Firefox (ищу дополнение) » 31-01-2018 16:33:20

Ultima2m пишет:

В кнопке Save+ была такая функция, но отвалилась.
Никто не пробовал наладить?[spoiler][code]   { label: "Сохранить значок веб-сайта", func: "saveFavicon()", image: "data:image/png;base64,.........."},
.........
  // сохранить иконку таба в установленную папку
   var faviconName = "favicon" + Date.now();
   var favicon = saveFaviconToFolder(faviconName);

// Сохранить иконку текущего сайта с диалогом сохранения .............
function saveFavicon() { saveImageURL(gBrowser.mCurrentTab.image, "save", null, false, false, null, content.document) };

// Сохранить в указанную папку иконку таба как .ico и без диалога сохранения ..............
function saveFaviconToFolder(faviconName) {
   var url = gBrowser.mCurrentTab.image.replace("#-moz-resolution=16,16","");
   if ( !url || content.document.mozSyntheticDocument ) return false;
   if ( url.startsWith("http") ) url = "moz-anno:favicon:" + url;

   var img = new Image();
   img.onload = function() {
       var tools = C

Сustom Buttons » Custom Buttons » 29-01-2018 20:36:39

Garalf пишет:

Разъясните, плиз. Выложенные вами коды надо поместить в config.js?

Второй — нет, никуда не не надо помещать.
А первый — это да, код для добавления в конфигурационный файл.
Как бы, предположительно, обновление для Firefox 60

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

И, кажется, нашёл причину:
похоже, трюк с переопределением AddonSettings больше не работает.
Например, один и тот же код с алертом на бете 59.0b5 показывает true
а на 60.0a1 (2018-01-28) показывает false

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

Выделить код

Код:

var prop = "TelemetryLog";
var url = "resource://gre/modules/TelemetryLog.jsm";

var jsval = Cu.import(url, {});
jsval[prop] = {log(){}, entries: () => []};

var scope = {};
var nsvo = Cu.import(url, scope);

alert(scope[prop] === nsvo[prop]);

Сustom Buttons » Custom Buttons » 26-01-2018 22:57:33

После некоторого перерыва обновил Nightly до 60.0a1 (2018-01-26)
Так оно мне мне все расширения повыключало.

Пробовать изменять настройки не хочу, поскольку считаю удобным, когда
расширения на странице about:addons находятся в своей отдельной категории.

Разбираться особо не стал, просто дописал this.isDisabledLegacy = () => false;
Удалил extensions.json, рестарт, и, вроде, снова работает, тьфу-тьфу-тьфу.
[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

Сustom Buttons » Обсуждение кнопок CB » 20-01-2018 04:09:43

Andrey_Krropotkin пишет:

в любом меню в пункте "Веб - разработка" удваивается количество пунктов начиная  от Панели разработчика до Других инструментов. Или может это только у меня ?

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

bunda1 пишет:

Двойное нажатие ПКМ не вызывает меню СВ, потому что в Сustom Buttons что-то сломано и иеперь в всех кнопках меню нельзя вызвать двойным нажатием ПКМ.

Двойное нажатие ПКМ не вызывает меню СВ потому,
что в коде кнопки на это есть прямой запрет. А вот так, например, вызывает.
[spoiler][code]// Настройка функций кликов мыши для кнопки ...............
/*
this.onclick =e=> {
   if ( e.button == 0 ) GrabScroll.toggle();
       
   if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
        e.preventDefault(); 
        menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
        }     
};
this.on

Сustom Buttons » Custom Buttons » 17-01-2018 21:33:18

dedfor пишет:

не работает

Всё работает, но, видимо, твой браузер слишком стар для таких дел.
bunda1 же сказал тебе, — будь скучным, используй XMLHttpRequest.

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

Выделить код

Код:

var req = new XMLHttpRequest();
req.responseType = "text";
req.open("get", "https://api.ipify.org/", true);
req.send();
req.onloadend = function() {
    var IP = req.response || "Шиш";
    alert(IP);
}

Сustom Buttons » Custom Buttons » 17-01-2018 16:09:14

dedfor пишет:

А как, чтобы в переменной IP был и код попроще, без "=>" и без ".then" ?

Какой капризный заказчик :D

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

Выделить код

Код:

(async function() {
    var IP = await (await fetch("https://api.ipify.org/")).text();
    alert(IP);
})();

Сustom Buttons » Custom Buttons » 17-01-2018 13:23:06

dedfor пишет:

не получается у меня

Что там может не получится :/

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

Выделить код

Код:

fetch("https://api.ipify.org/")
    .then(res => res.text(), alert)
    .then(ip => alert(ip), alert);

Обсуждение расширений » Extended Link Properties » 16-01-2018 12:13:49

Infocatcher пишет:

В планах сначала подписать подправленную старую версию

А где таковую скачать или посмотреть исходный код?
Попробую объяснить свою непонятку.

В гитхабских LPP-коммитах 2018 год, у меня, даже не отображается.
А по ссылке options.xul отображается что используются <pref{window, pane, erences, erence}>
Но обеспечительное, для этого, файло уже выпилено.

Если так, то я не в смысле, что мол что-то сделай,
но просто прокомментируй этот момент.

Сustom Buttons » [CB]Attributes Inspector (для разработчиков) » 13-01-2018 02:29:59

Infocatcher
Bug 1427419
InspectorUtils.webidl
Так?

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

Выделить код

Код:

        get dwu() {
            delete this.dwu;
            /*
            return this.dwu = Components.classes["@mozilla.org/inspector/dom-utils;1"]
                .getService(Components.interfaces.inIDOMUtils);
            */
            return this.dwu = "inIDOMUtils" in Components.interfaces
                ? Components.classes["@mozilla.org/inspector/dom-utils;1"]
                    .getService(Components.interfaces.inIDOMUtils)
                : InspectorUtils;
            
        },

Сustom Buttons » Обсуждение кнопок CB » 13-01-2018 00:30:32

Andrey_Krropotkin пишет:

Dumby Вы когда-то делали кнопку консоль браузера в боковой панели и в новой вкладке для разных версий. Для 57 не посмотрите?

OK, попробую
[spoiler][code]({
    title: "Консоль браузера",
    icon: "chrome://devtools/skin/images/tool-webconsole.svg",
    url: "chrome://devtools/content/webconsole/webconsole.xul",
    init() {
        var trg = document.getElementById("browser");
        trg && addEventListener("DOMContentLoaded", this, false, trg);
        var attrs = {
            sidebartitle: this.title, sidebarurl: this.url,
            type: "checkbox", group: "sidebar", checked:
                SidebarUI.isOpen && SidebarUI.browser.getAttribute("src") == this.url
        };
        var broadcaster = this.element("broadcaster", Object.assign({
            id: "viewBrowserConsoleSidebar"
        }, attrs), document.getElementById("mainBroadcasterSet"));

        Object.assign(attrs, {
            autoCheck: "false", label: this.title, observes

Сustom Buttons » Обсуждение кнопок CB » 08-01-2018 19:07:17

mokujin пишет:

или только у меня

Нет, не только у тебя.

Сustom Buttons » [CB]Изменить масштаб » 07-01-2018 23:00:35

usalex пишет:

А, кстати, зачем делать для кнопки поддержку многопроцессорности, если само расширение Custom Buttons при установке отключает эту самую многопроцессорность?

[spoiler]Само расширение Custom Buttons, при установке, нигде ничего не отключает.
Ни многопроцессорность, ни многопроцессность, ни что-либо другое иное прочее.

Само расширение Custom Buttons полностью совместимо с многопроцессностью.
Более того, оно (ну, может, за исключением своего протокола),
не имеет к многопроцессности никакого отношения совсем.

Да, лиса может посмотреть, что мол завелось расширение,
у которого не заявлено, что оно совместимо с e10s,
и, на основании этого, выключить режим многопроцессности,
чтобы пользователь расширения был доволен.

А в Custom Buttons не заявлено, что оно совместимо с e10s только потому,
чтобы кнопки могли воспользоваться всем тем, что хоть как-то, иногда,
обеспечивает работу немногопроцессного кода в многопроцессном Firefox.


Те, для кого многопроцессный Firef

Сustom Buttons » Обсуждение кнопок CB » 04-01-2018 19:11:57

momo2000 пишет:

не монятно

Ну, там же, по ссылке, написано: «js-ctypes to send keys winapi».
То есть код делает так, как если бы было дважды нажато Ctrl
А QTranslate это отслеживает

Справка QTranslate пишет:

Системные горячие клавиши (по умолчанию):
Double Ctrl => Показать главное окно программы (с переводом, если есть выделенный текст)

Сподобился проверить в такой конфигурции

скрытый текст
VMware® Workstation 11.0.0 build-2305329
Windows 10 Pro 10.0.10240 x64
Firefox Nightly 59.0a1 (2018-01-03) (32-бит), e10s включён
Custom Buttons 0.0.5.8.9.6pre
QTranslate 6.4.0

Работает. Окно QTranslate появляется, и выделенный текст в нём есть.

Сustom Buttons » Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE » 29-12-2017 08:06:16

ruslaw пишет:

Заменил ее на
      var url = decodeURIComponent(url);
C:\test.html - открытвает нормально
C:\тест.html - Не удается найти "file:///C:/B5AB.html"

nsIProcess.runw() пробовал?

Сustom Buttons » Обсуждение кнопок CB » 25-12-2017 20:45:14

Andrey_Krropotkin пишет:

в кнопке   Save+-  fileContent явно не задан

Не готов согласиться. fileContent задан явно в переменной url,
только в виде адреса, представленного интерфейсом nsIURI.
Так что здесь всё аналогично.
[spoiler][code]      var fp = window.makeFilePicker();
      fp.init(window, "Сохранить как…", fp.modeSave);
      fp.appendFilter("", "*.png");
      fp.defaultString = getTabLabel() + "  " + (new Date().toLocaleFormat("%d.%m.%Y. %H:%M:%S")) + ".png";
/*
      if (fp.show() == fp.returnCancel || !fp.file) return;
     
      var wbp = window.makeWebBrowserPersist();
      parseInt(Services.appinfo.version) < 36
      ? wbp.saveURI(url, null, null, null, null, fp.file, null)
      : wbp.saveURI(url, null, null, null, null, null, fp.file, null); // если FF36+
*/
      fp.open(res => {
         if

Сustom Buttons » [CB]Изменить масштаб » 24-12-2017 16:16:33

usalex пишет:

уговорить

:/

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

Выделить код

Код:

addEventListener("wheel", {
    flag: false, handleEvent(e) {this[e.type](e);},
    contextmenu(e) {
        this.flag = e.preventDefault();
        window.removeEventListener("contextmenu", this);
    },
    wheel(e) {
        if (e.buttons != 2 || !gBrowser.selectedBrowser.matches(":hover")) return;
        if (!this.flag) this.flag = !window.addEventListener("contextmenu", this);
        e.preventDefault(); FullZoom[e.deltaY > 0 ? "reduce" : "enlarge"]();
    }
}, false, gBrowser);
FullZoom._globalValue = 1.25; addDestructor(() => delete FullZoom._globalValue);

Сustom Buttons » Обсуждение кнопок CB » 24-12-2017 00:31:24

Andrey_Krropotkin пишет:

ссылается на строчку

Это сломали где-то с Firefox 54. Из консоли ошибка передаётся
на пару строк дальше, чем на самом деле. Думалось, что само пройдёт, но нет.

В консоли пишет "window._content is undefined"

Ничего удивительного.

что-то запутался в коде

Ну, наверно, следует отталкиваться от чего-нибудь менее запутанного.
А запутать и доработать всегда успеется.

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

Выделить код

Код:

function openInProfile(profileName, url = gBrowser.currentURI.spec) {
    var firefox = Services.dirsvc.get("XREExeF", Ci.nsIFile);
    var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
    var args = ["-no-remote", "-p", profileName, url];
    process.init(firefox);
    process.run(false, args, args.length);
}
openInProfile("Debug");

Сustom Buttons » Обсуждение кнопок CB » 22-12-2017 01:09:41

Infocatcher пишет:

легко починить, но, увы, обратно-несовместимо

Ой, я когда-то всё-таки склонился к использованию аскетичного редактора,
но тут недавно как-раз понадобилось коё-что проверить, и, соответственно,
пришлось кнопку править. Значит, получается, так нельзя? (в смысле eval)
[spoiler][code]        get loadOverlaysGen() {
            var str = "fround" in Math ? "*" : ""; // Firefox 26+
            var arr = [
                '(function' + str + ' loadOverlaysGen(window, callback/*, overlayData1, ...*/) {',
                '    var gen = loadOverlaysGen.__generator;',
                '    for(var i = 2, l = arguments.length; i < l; ++i) {',
                '        var overlayData = arguments[i];',
                '        this.loadOverlay(window, overlayData[0], overlayData[1], function() {',
                '            gen.next();',
                '        });',
                '        yield 0;',
                '    }',
                '    callback();',
         

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 09-12-2017 16:43:29

Coroner пишет:

И цвет "рамки" со "стрелочкой вверх" поменять не выходит.

Буду благодарен любой информации или наводке. :angel:

:/ magenta

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

Выделить код

Код:

#sidebarMenu-popup .panel-arrowcontent {
  --arrowpanel-border-color: MAGENTA !important;
}
#sidebarMenu-popup .panel-arrow {
  --panel-arrow-image-vertical: url('data:image/svg+xml,\
<?xml version="1.0" encoding="UTF-8"?>\
<!-- This Source Code Form is subject to the terms of the Mozilla Public\
   - License, v. 2.0. If a copy of the MPL was not distributed with this\
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->\
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="10">\
  <path d="M 0,10 L 10,0 20,10 z" fill="MAGENTA"/>\
  <path d="M 1,10 L 10,1 19,10 z" fill="-moz-field"/>\
</svg>') !important;
}

Board footer

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