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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№1245125-01-2018 15:33:33

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 58.0

Re: Custom Buttons

Andrey_Krropotkin пишет

Попробуй отредактированную кнопку Экспорт всех CB кнопок в HTML файл

Похоже со шрифтами проблема. Русскоязычные пути не воспринимает и папки  именует кракозябрами.
Но твой код работает нормально. Этого достаточно.
Спасибо.

Отсутствует

 

№1245226-01-2018 21:45:17

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Custom Buttons

Andrey_Krropotkin пишет

Почему сам Custom Buttons не может сохранять настройки в about:config (например выбор внешнего редактора)

Удалили старый метод записи строковых настроек с поддержкой юникода.
А вот протокол, похоже, скис. Старое отломали, а еще живая замена корежит ссылки:

Выделить код

Код:

newURI: function (spec, charset, baseURI) {
        //var uri = Components. classes [kSIMPLEURI_CONTRACTID]. createInstance (nsIURI);
        //uri. spec = spec; // Read-only in Firefox 58+
        //return uri;
        var uri = Components. classes ["@mozilla.org/network/standard-url;1"].
            createInstance (Components. interfaces. nsIStandardURL);
        uri. init (uri. URLTYPE_NO_AUTHORITY, 0, spec, charset, baseURI); // Will break URI...
        return uri. QueryInterface (Components. interfaces. nsIURI);
    },

Еще немного распорок: custom_buttons-0.0.5.8.9-fixed7.1.xpi (без подписи).

Добавлено 26-01-2018 22:02:34

Infocatcher пишет

протокол, похоже, скис

https://bugzilla.mozilla.org/show_bug.cgi?id=1431204
Make nsIURI.spec readonly

Добавлено 26-01-2018 22:10:47
Как мило.

Выделить код

Код:

var uri = Components.classes["@mozilla.org/network/simple-uri;1"]
    .createInstance(Components.interfaces.nsIURI);
//uri.spec = spec; // Read-only in Firefox 58+
uri = uri.mutate().setSpec(spec).finalize();

Добавлено 26-01-2018 22:20:48
По ссылке теперь протокол на прикладной некромании. Выглядит как живой.

Добавлено 26-01-2018 22:40:26
Не буду некромантию исправлять, так даже лучше. :D

Отредактировано Infocatcher (26-01-2018 22:41:07)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1245326-01-2018 22:57:33

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

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

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

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

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

Выделить код

Код:

//
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);
    Cu.importGlobalProperties(["URL", "Blob"]); var url = URL.createObjectURL(new Blob([(code)]));
    jsvals.forEach(jsval => {try {sl.loadSubScript(url, jsval);} catch(ex) {re(ex);}});

})(String.raw`
    this.isDisabledLegacy = () => false;
    try {SIGNED_TYPES.clear();} catch(ex) {};
    "verifyZipSignedState" in this && (signedState => {
        var re = /\x06\x03U\x04\x03\x14[\s\S](\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)0\x82\x02"0\r\x06\t/i;
        var getUUID = () => {
            var gen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
            return (getUUID = () => gen.generateUUID().toString())();
        }
        var getURI = file => {
            var jsval = Cu.import("resource://gre/modules/addons/XPIProvider.jsm", {});
            return (getURI = file => jsval.getURIForResourceInFile(file, "META-INF/mozilla.rsa"))(file);
        }
        var getId = file => {
            var result, is = {close() {}}, sis = {close() {}};
            try {
                is = Services.io.newChannelFromURIWithLoadInfo(getURI(file), null).open();
                sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
                sis.init(is); var str = sis.readBytes(sis.available());
                var match = str.match(re); if (match) result = match[1];
            } catch(ex) {}
            sis.close(); is.close();
            return result || getUUID();
        }
        verifyZipSignedState = function verifyZipSignedState(aFile, aAddon) {
            if (aAddon.id || aAddon._installLocation.name == KEY_APP_TEMPORARY)
                return Promise.resolve({signedState, cert: null});
            var root = !AppConstants.MOZ_REQUIRE_SIGNING && Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)
                ? Ci.nsIX509CertDB.AddonsStageRoot : Ci.nsIX509CertDB.AddonsPublicRoot;
            return new Promise(resolve => {
                var callback = {openSignedAppFileFinished(rv, zipReader, cert) {
                    zipReader && zipReader.close();
                    resolve({signedState, cert: cert || {commonName: getId(aFile)}});
                }};
                gCertDB.openSignedAppFileAsync(root, aFile, callback.wrappedJSObject = callback);
            });
        }
    })(AddonManager.SIGNEDSTATE_NOT_REQUIRED);
`)} catch(err) {Components.utils.reportError(err);}


Infocatcher
О, я как раз длинный пост на эту тему набирал.
А тут уже обновление вышло. Спасибо!
Только установка spec так же используется и в overlay.js в трёх местах.

А из nsILoadInfo удалили SEC_NORMAL
На работе CustomButtonsService.js, вроде, не сказалось, но, может, изменить,
а то вдруг что-то случится с nsIChannel.open() в пользу open2()
чтобы тогда не искать ещё и это.

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

Выделить код

Код:

getChannel: function (aSpec, aContentPolicy) {
        var ios = Components. classes ["@mozilla.org/network/io-service;1"]. getService (Components. interfaces. nsIIOService);
        var chan;
        var contentPolicy = aContentPolicy || Components. interfaces. nsIContentPolicy. TYPE_OTHER;
        if ("newChannel2" in ios) // Firefox 36+
            chan = ios. newChannel2 (
                aSpec,
                null,
                null,
                null,
                Components. classes ["@mozilla.org/systemprincipal;1"]. createInstance (Components. interfaces. nsIPrincipal),
                null,
                // Bug 1283427 - Remove SEC_NORMAL completely.
                // https://hg.mozilla.org/mozilla-central/rev/49138c9a5858
                //Components. interfaces. nsILoadInfo. SEC_NORMAL,
                "SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL" in Components. interfaces. nsILoadInfo // Firefox 42+
                    ? Components. interfaces. nsILoadInfo. SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL
                    : Components. interfaces. nsILoadInfo. SEC_NORMAL,
                contentPolicy);
        else
            chan = ios. newChannel (aSpec, null, null);
        return chan;
    }

Отредактировано Dumby (26-01-2018 22:59:36)

Отсутствует

 

№1245428-01-2018 01:01:05

usalex
Участник
 
Группа: Members
Зарегистрирован: 17-05-2016
Сообщений: 82
UA: Firefox 57.0

Re: Custom Buttons

Infocatcher пишет

Еще немного распорок: custom_buttons-0.0.5.8.9-fixed7.1.xpi

А для ff 57 лучше использовать fixed6, а не fixed7 - правильно я понимаю?

Отсутствует

 

№1245528-01-2018 22:40:43

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 45.0

Re: Custom Buttons

А можно из CB переключать окна, не вкладки - а окна. Просто циклически по очереди или с помощью меню типа вкладок? до v57

Добавлено 28-01-2018 22:41:07
нету такой кнопки?

Отредактировано mokujin (28-01-2018 22:41:07)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1245629-01-2018 03:27:33

css
Участник
 
Группа: Members
Зарегистрирован: 07-04-2014
Сообщений: 186
UA: Firefox 57.0

Re: Custom Buttons

Ребята, есть какое-нибудь решение средствами СВ для этого https://forum.mozilla-russia.org/viewtopic.php?pid=752805#p752805 ? Или совсем нерешаемо?

Отсутствует

 

№1245729-01-2018 10:37:41

iglis
Участник
 
Группа: Members
Зарегистрирован: 29-02-2016
Сообщений: 36
UA: Firefox 52.0

Re: Custom Buttons

css
на странице Image Toolbar есть ссылка на альтернативу - Image Picka

Отсутствует

 

№1245829-01-2018 13:00:33

css
Участник
 
Группа: Members
Зарегистрирован: 07-04-2014
Сообщений: 186
UA: Firefox 57.0

Re: Custom Buttons

iglis, это вообще ни разу не альтернатива. Оно сохраняет только в дефолтную папку загрузки. Сама кнопка явно для очень слабовидящих, непонятно, почему она вообще не на весь экран. Сохранять смахиванием вообще не вариант для меня, только мешает такая фича. В общем, вопрос открыт. Если кто-нибудь поможет с реализацией, буду очень благодарна.

Отсутствует

 

№1245929-01-2018 13:21:46

ruslaw
Участник
 
Группа: Members
Зарегистрирован: 22-11-2017
Сообщений: 34
UA: Firefox 42.0

Re: Custom Buttons

Имеется кнопка "Открыть в другом браузере":
https://forum.mozilla-russia.org/viewtopic.php?pid=728421#p728421
Можно ли дополнить ее опцией "открыть фрейм (текущий, активный) в другом браузере" если страница имеет фреймовую структуру?

Отсутствует

 

№1246029-01-2018 13:22:45

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 316
UA: Firefox 57.0

Re: Custom Buttons

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

Отредактировано Garalf (29-01-2018 13:25:31)

Отсутствует

 

№1246129-01-2018 20:36:39

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

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]);

Отсутствует

 

№1246230-01-2018 20:34:55

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 52.0

Re: Custom Buttons

Исправил кнопки Часы и Экспорт всех CB кнопок в HTML файл для соместимости с FF58.

Отсутствует

 

№1246308-02-2018 10:06:48

intersk
Участник
 
Группа: Members
Зарегистрирован: 20-06-2013
Сообщений: 104
UA: Firefox 52.0

Re: Custom Buttons

bunda1 спасибо

Отсутствует

 

№1246414-02-2018 13:58:37

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 475
UA: Firefox 52.0

Re: Custom Buttons

Как добавить значок "Закладка" в строку адреса, чтобы получить аналог дополнения Star-Button In Urlbar?
Это дополнение создаёт белую Звёздочку, при клике на неё адрес добавляется в Избранное и значок станет жёлтым. При клике на жёлтый значок открывается диалог "Редактирование закладки" - всё как в стандартной двойной кнопке "Закладки".

Можно сделать такую CustomButtons кнопку? (по форуму подобного кода для адресной строки не нашёл)

Отсутствует

 

№1246516-02-2018 09:57:21

intersk
Участник
 
Группа: Members
Зарегистрирован: 20-06-2013
Сообщений: 104
UA: Firefox 52.0

Re: Custom Buttons

bunda1 пишет

Исправил кнопки Часы

у меня вот как стало показывать - с лишним двоеточием, видимо когда одна цифра в часе
b5f65174f4f7fcb5bb05e3a9b4981ff4.jpeg

Отредактировано intersk (16-02-2018 10:26:05)

Отсутствует

 

№1246616-02-2018 19:09:43

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

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);

Отсутствует

 

№1246716-02-2018 22:43:50

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Custom Buttons

Подскажите пожалуйста по поводу вывода формата даты:
Вот пример:
   var date = new Date();
   var time = date.toLocaleString('ru', {year: 'numeric', month: 'numeric', day: 'numeric'})
   var time = time + '. ' + date.toLocaleTimeString().replace(/:/g, "·");
Должен выводить как пример 16.02.2018, а на на F57 выводит 16.02.2018. 22·29·38 (на F58 не проверял), т.е. получается, то что не указано в опциях date.toLocaleString (часы, мин, сек), выводится по умолчанию (даже если я их не указал) и как отсечь тогда не нужные мне значения даты, или может надо использовать другую функцию.

Отредактировано Andrey_Krropotkin (16-02-2018 22:45:54)

Отсутствует

 

№1246817-02-2018 00:19:23

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

Andrey_Krropotkin пишет
Выделить код

Код:

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

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

:o:o:o

Отредактировано Dumby (17-02-2018 00:20:52)

Отсутствует

 

№1246917-02-2018 06:44:36

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Custom Buttons

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

Отредактировано Andrey_Krropotkin (17-02-2018 08:48:03)

Отсутствует

 

№1247017-02-2018 09:07:36

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Custom Buttons

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

просто не юзать toLocaleTimeString
var t=new Date();
var y=1900+t.getYear();
var min=t.getMinutes(); if (min<10){min="0"+min};
var h=t.getHours();
var m =t.getMonth()+1;if (m<10){m="0"+m};
var d=t.getDate();
и собирай как хочешь
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Methods


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№1247117-02-2018 11:47:29

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Custom Buttons

okkamas_knife этот метод мне известен. Я просто хотел узнать в новой toLocaleTimeString возможно ли собрать как хочешь или нет.

Отсутствует

 

№1247217-02-2018 14:25:25

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

Andrey_Krropotkin пишет

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

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

Выделить код

Код:

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

Отсутствует

 

№1247317-02-2018 17:35:46

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 323
UA: Firefox 57.0

Re: Custom Buttons

bunda1 пишет

Исправил кнопки Часы ...

Если можно, добавьте, пожалуйста, отображение секунд с учётом этих моментов

Dumby пишет

Ну, если нужно просто 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);

Спасибо :)

Отсутствует

 

№1247417-02-2018 19:52:38

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 52.0

Re: Custom Buttons

Viatcheslav пишет
bunda1 пишет

Исправил кнопки Часы ...

Если можно, добавьте, пожалуйста, отображение секунд с учётом этих моментов

Выделить код

Код:

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%3E%u0427%u0430%u0441%u044B%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-2%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bself.timer%20%3D%20setInterval%28%28%29%3D%3E%20self.label%20%3D%20new%20Date%28%29.toLocaleTimeString%28%22lv-LV%22%29%2C%201000%29%3B%20%20%0A%0Avar%20style%20%3D%20custombutton.buttonGetHelp%28self%29.replace%28/id/g%2C%20_id%29%3B%0Avar%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28style%29%29%3B%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%200%29%3B%20%0A%0AaddDestructor%28%28%29%3D%3E%20%7B%20%0A%20%20%20sss.unregisterSheet%28uri%2C%200%29%3B%0A%20%20%20try%20%7B%20clearTimeout%28self.timer%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%7D%29%3B%0A%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%0A%20%20%20var%20date%20%3D%20new%20Date%28%29%3B%0A%20%20%20self.tooltipText%20%3D%20date.toLocaleDateString%28%29%20+%20%27.%20%27%20+%20date.toLocaleDateString%28%27ru%27%2C%20%7Bweekday%3A%20%27long%27%7D%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%23id%20.toolbarbutton-text%20%7B%0A%20%20%20color%3A%20black%20%21important%3B%0A%20%20%20font-weight%3A%20bold%20%21important%3B%0A%20%20%20display%3A%20block%20%21important%3B%0A%7D%0A%0A%23id%20.toolbarbutton-icon%20%7B%0A%20%20display%3A%20none%20%21important%3B%0A%7D%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№1247517-02-2018 22:52:33

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 52.0

Re: Custom Buttons

intersk пишет
bunda1 пишет

Исправил кнопки Часы

у меня вот как стало показывать - с лишним двоеточием, видимо когда одна цифра в часе

Часы

Отсутствует

 

Board footer

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