Попробуй отредактированную кнопку Экспорт всех CB кнопок в HTML файл
Похоже со шрифтами проблема. Русскоязычные пути не воспринимает и папки именует кракозябрами.
Но твой код работает нормально. Этого достаточно.
Спасибо.
Отсутствует
Почему сам 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
протокол, похоже, скис
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
Не буду некромантию исправлять, так даже лучше.
Отредактировано Infocatcher (26-01-2018 22:41:07)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
После некоторого перерыва обновил 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);}
А из 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)
Отсутствует
А можно из CB переключать окна, не вкладки - а окна. Просто циклически по очереди или с помощью меню типа вкладок? до v57
Добавлено 28-01-2018 22:41:07
нету такой кнопки?
Отредактировано mokujin (28-01-2018 22:41:07)
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
css
на странице Image Toolbar есть ссылка на альтернативу - Image Picka
Отсутствует
iglis, это вообще ни разу не альтернатива. Оно сохраняет только в дефолтную папку загрузки. Сама кнопка явно для очень слабовидящих, непонятно, почему она вообще не на весь экран. Сохранять смахиванием вообще не вариант для меня, только мешает такая фича. В общем, вопрос открыт. Если кто-нибудь поможет с реализацией, буду очень благодарна.
Отсутствует
Имеется кнопка "Открыть в другом браузере":
https://forum.mozilla-russia.org/viewtopic.php?pid=728421#p728421
Можно ли дополнить ее опцией "открыть фрейм (текущий, активный) в другом браузере" если страница имеет фреймовую структуру?
Отсутствует
Разъясните, плиз. Выложенные вами коды надо поместить в 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]);
Отсутствует
Исправил кнопки Часы и Экспорт всех CB кнопок в HTML файл для соместимости с FF58.
Отсутствует
Как добавить значок "Закладка" в строку адреса, чтобы получить аналог дополнения Star-Button In Urlbar?
Это дополнение создаёт белую Звёздочку, при клике на неё адрес добавляется в Избранное и значок станет жёлтым. При клике на жёлтый значок открывается диалог "Редактирование закладки" - всё как в стандартной двойной кнопке "Закладки".
Можно сделать такую CustomButtons кнопку? (по форуму подобного кода для адресной строки не нашёл)
Отсутствует
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);
Отсутствует
Подскажите пожалуйста по поводу вывода формата даты:
Вот пример:
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)
Отсутствует
Должен выводить как пример 16.02.2018, а на на F57 выводит 16.02.2018. 22·29·38
Отредактировано Dumby (17-02-2018 00:20:52)
Отсутствует
Dumby спасибо, теперь понятно, просто пример брал из чужой кнопки.
Тогда как сделать, чтобы год стоял впереди дня и месяца?
Отредактировано Andrey_Krropotkin (17-02-2018 08:48:03)
Отсутствует
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
Отсутствует
okkamas_knife этот метод мне известен. Я просто хотел узнать в новой toLocaleTimeString возможно ли собрать как хочешь или нет.
Отсутствует
Тогда как сделать, чтобы год стоял впереди дня и месяца?
Без понятия. Но, как сказал оккамс, простор открыт
Отсутствует
Исправил кнопки Часы ...
Если можно, добавьте, пожалуйста, отображение секунд с учётом этих моментов
Ну, если нужно просто 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);
Спасибо
Отсутствует
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
Отсутствует