Граждане, у меня скверная новость. Вчера моя Windows 10 скачала и установила какие то накопительные обновления и после этого слетела Сustom Buttons. Пишет: дополнение не может быть проверено, поэтому оно было отключено.
Я неделю назад с трудом установил paxmode. Сейчас удалил расширение и попробовал установить заново. Устанавливаться оно отказывается, потому что не проверено. Чистка папки startupCache не помогает. Что делать?
Отсутствует
Осталось допилить , все остальные по алфавиту ...
var defaultEngine = "Startpage"; Как бы другие выставить , как мне надо? Типа, как в list.json было:
"searchOrder": ["Startpage", "Google", "Bing", "Yandex-Ua", "Yandex", "Yahoo", "Teoma"]
Хорошо, попробую.
В массив searchOrder вписать имена папок с поисковиками.
// (async cso => { var defaultEngine = "vatera"; var searchOrder = ["vatera", "google", "Eudict", "palasprint", "readmoo", "ddg"]; var rph = Cc["@mozilla.org/network/protocol;1?name=resource"].getService(Ci.nsIResProtocolHandler); var uri = rph.getSubstitution("gre").QueryInterface(Ci.nsIJARURI).JARFile.QueryInterface(Ci.nsIFileURL); var se, dir = uri.file.parent; dir.append(se = "search-extensions"); if (!dir.exists() || !dir.isDirectory()) return; var u = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService).newURI; var json = Cu.readUTF8URI(u(cso)).replace(/https(?!\?)/g, "$&?"); var jsonURL = "data:application/json;charset=utf-8," + encodeURIComponent(json); var ams = Cc["@mozilla.org/addons/addon-manager-startup;1"].getService(Ci.amIAddonManagerStartup); globalThis[Symbol("http mod")] = ams.registerChrome(uri, [["override", cso, jsonURL]]); rph.setSubstitution(se, u(uri.spec.replace(/omni\.ja$/, se))); searchOrder.reverse(); var sel = {engines: []}, dlc = defaultEngine.toLowerCase(); var find = function(name) {return name.toLowerCase() == this} for(var {leafName} of dir.directoryEntries) { var lc = leafName.toLowerCase(); var engine = {webExtension: {id: lc + "@search.mozilla.org", locale: "default"}}; var ind = searchOrder.findIndex(find, lc); if (ind >= 0) engine.orderHint = ind + 1; sel.engines[lc == dlc ? "unshift" : "push"](engine); } Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsISearchService) .wrappedJSObject._fetchEngineSelectorEngines = async () => sel; })("chrome://browser/content/schemas/chrome_settings_overrides.json");
Отсутствует
Dumby
Маэстро, вот эту кнопку, Часы https://forum.mozilla-russia.org/viewto … 08#p724808, можно ли портировать, приделать к ucf, она у меня одна осталась, последняя из могиканш, собсстно, из-за нее и держу аддон. Взгляни, пожалуйста. К суровому вердикту готов
Отсутствует
Dumby
Вроде норм, но пара поисковиков попадала....Не пойму почему.Ок! Сделал ...
"gecko": {
"id": "....@search.mozilla.org" - не каждый берет, пришлось обмануть...Теперь все в елочку!
Нет, дело не в id , а названии папок...Левые не встанут...Да и так норм. Кстати, а нельзя из каталога search-extensions обратно в omni.ja ?
Непривычно , а то снести можно ненароком...Я извиняюсь, с эти searchOrder.reverse(); есть одна заморока, не берет от папки поисковиков ,как в первом коде, тольке те,что забиты в браузер изначально...приходится папки с названиями брать дефолтные и пихать поисковик в них свой. Так названия не совпадают...Ищи потом..
Может этого кода не хватает? visibleDefaultEngines
Отредактировано solombala (26-02-2021 12:22:19)
Отсутствует
toxa
Винда никаким боком не связана с CB. Может, браузер обновился? Если да и до обновления был патченный omni.ja, надо снова патчить. Достаточно одной таблэтки
omni.ja --> modules --> AppConstants.jsm
И проверить в about:config
xpinstall.signatures.required - false
extensions.experiments.enabled - true
И не забыть очистить потом startupCache
Отсутствует
toxa
Винда никаким боком не связана с CB. Может, браузер обновился? Если да и до обновления был патченный omni.ja, надо снова патчить. Достаточно одной таблэтки
omni.ja --> modules --> AppConstants.jsmИ проверить в about:config
xpinstall.signatures.required - false
extensions.experiments.enabled - true
И не забыть очистить потом startupCache
Ну по логике конечно Винда не связана с CB. Но оно как то получилось, что при установке обновлений система несколько раз перезагружалась. Браузер при этом не обновлялся. И вот после этих пертурбаций и слетело CB. После, конечно, не значит вследствие. Но осадочек то остался...
Короче пропатчил я omni.ja, сделал все как написано. СВ установилось.
Спасибо большое за помощь!
Отсутствует
вот эту кнопку, Часы https://forum.mozilla-russia.org/viewto … 08#p724808
Ох, даже не знаю
try {CustomizableUI.createWidget({ label: "Часы", id: "ucf-cbbtn-digital-clock", localized: false, onCreated(btn) { var impl = this, {id} = this, css = ` @-moz-document url(chrome://browser/content/browser.xhtml) { #${id} { fill: sienna !important; list-style-image: url("chrome://browser/skin/history.svg") !important; } :not(toolbarpaletteitem) > #${id} > .toolbarbutton-text { color: black !important; font-weight: bold !important; display: block !important; } :not(vbox,toolbarpaletteitem) > #${id} > .toolbarbutton-icon { display: none !important; } }`; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.USER_SHEET); btn.render = this.render = function() { if (this.matches(":root[customizing] :scope")) return this.constructor.prototype.render.call(this); delete this.render; this.render(); this.next = this.nextd = 0; this.lab = this.icon.nextSibling; impl.tick(this, impl); var date = new Date(); this.next = date.setMinutes(date.getMinutes() + 1, 0, 0); this.intId = this.ownerGlobal.setInterval(impl.tick, 1e3, this, impl); this.onmouseover = impl.mouseover; this.removeAttribute("context"); } this.onCreated = btn => btn.render = this.render; }, tick(btn, impl) { if (btn.isConnected) { if (Date.now() > btn.next) btn.next += 6e4, btn.lab.value = new Date().toLocaleTimeString("lv-LV").slice(0, 5); } else btn.ownerGlobal.clearInterval(btn.intId), btn.onmouseover = null, btn.lab.value = impl.label, btn.render = impl.render; }, mouseover() { if (Date.now() < this.nextd) return; var date = new Date(); this.tooltipText = date.toLocaleDateString() + ". " + date.toLocaleDateString("ru", {weekday: "long"}); date.setDate(date.getDate() + 1); this.nextd = date.setHours(0, 0, 0, 0); } });} catch(ex) {Cu.reportError(ex);}
Отсутствует
Dumby
А правильно ли я сделал, уложив код в custom_script.js, там же и твой Undo Close Tab, cookiesPermissions - часиков не видно . Больше ничего не надо дописывать?
добавлено
Нашел! Спряталась среди кнопок Виталия. Интересно, что на 78 время вместе с иконкой отображается (иконка слева), а на 86 - просто супер!
Маэстро, благодарю
Отредактировано bezuma (26-02-2021 21:03:59)
Отсутствует
bezuma
на 78 время вместе с иконкой отображается
:not(toolbarpaletteitem) > #${id} > .toolbarbutton-icon { display: none !important; }
Еще наковырял дату формата yy.mm.dd в подсказке
this.tooltipText = date.toLocaleDateString('mn-MN',{year:"2-digit", month:"2-digit", day:"2-digit"}) + " - " + date.toLocaleDateString("ru", {weekday: "long"});
Отредактировано _zt (27-02-2021 06:28:37)
Отсутствует
_zt
убрал - теперь ОК D,M,Y мне привычней. Попытался секунды добавить ("удалить .slice(0,5)") - нарисовались, но не тикают, при старте, к примеру, 08:14:33, а на след. минуте сброс 08:15:00. Впрочем, и без них обойдемся
Отсутствует
bezuma
("удалить .slice(0,5)") - нарисовались, но не тикают
Так вроде тикает
Отсутствует
toxa пишеткод, копирующий адрес табов, можно приспособить под современные реалии?
Никакой адрес табов код не копирует.
Код добавляет в контекстное меню табов свои пункты, вернее, добавлял бы,
если бы в бесполезной функции htmlEscape не было бы синтаксической ошибки.
Если есть сомнение, возможно ли в «современных реалиях» добавление,
тогда пишем что-нибудь, и смотрим, добавляется или нет.скрытый текстВыделить кодКод:
(popup => { var prfx = `cb${_id.slice(20)}-tabCopy-`; var menuitem = popup.appendChild(document.createXULElement("menuitem")); menuitem.id = prfx + "url"; addDestructor(() => popup.querySelectorAll(`[id^="${prfx}"]`) .forEach(n => n.remove()) ); menuitem.render = () => { var node = document.createXULElement("menuseparator"); node.id = prfx + "sep"; menuitem.before(node); menuitem.setAttribute("oncommand", "tcopy(this.id)"); node = menuitem.cloneNode(false); node.id = prfx + "bbc"; node.setAttribute("label", "2"); menuitem.after(node); menuitem.setAttribute("label", "1"); menuitem.tcopy = node.tcopy = id => { var tab = TabContextMenu.contextTab; var uri = gBrowser.getBrowserForTab(tab).currentURI; var url = gURLBar.makeURIReadable(uri).displaySpec; gClipboard.write(id.endsWith("l") ? url : `[url=${url}]${tab.label}[/url]`); } delete menuitem.render; menuitem.render(); } })(document.getElementById("tabContextMenu"));
Dumby
Вот спасибо!!
Давно хотел оживить эту кнопку, с ней намного удобней.
Еще вопрос, он не совсем по кнопкам. Я вешаю обработчик события onwheel на какой то элемент страницы. При этом мне не нужно, чтобы страница прокручивалась, мне надо поймать событие на элементе и все. В старых версиях ФФ я писал в функции event.preventDefault() и оно вроде помогало. Теперь не помогает. Причем я заметил, что если повернуть колесико буквально на один клик, то скролла вроде не происходит. Но с последующими кликами скролл уже есть.
Отредактировано toxa (27-02-2021 19:25:19)
Отсутствует
нельзя из каталога search-extensions обратно в omni.ja ? Это сложно? Уделал все поисковики, теперь папка search-extensions глаз режет...
Ну, разве что чисто теоретически, не охота omni.ja править.
И осторожнее там, а то, уж не знаю связано ли с этим (возился и с другим),
но тот лис уже загнулся (перестал перезапускаться), пришлось новый экземпляр клонировать.
Там работает, в смысле подхватились все встроенные поисковики какие в нём есть, 71 штука .
// (async cso => { var defaultEngine = "vatera"; var searchOrder = ["vatera", "google", "Eudict", "palasprint", "readmoo", "ddg"]; var rph = Cc["@mozilla.org/network/protocol;1?name=resource"].getService(Ci.nsIResProtocolHandler); var uri = rph.getSubstitution("app").QueryInterface(Ci.nsIJARURI).JARFile; var u = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService).newURI; var json = Cu.readUTF8URI(u(cso)).replace(/https(?!\?)/g, "$&?"); var jsonURL = "data:application/json;charset=utf-8," + encodeURIComponent(json); var ams = Cc["@mozilla.org/addons/addon-manager-startup;1"].getService(Ci.amIAddonManagerStartup); globalThis[Symbol("http mod")] = ams.registerChrome(uri, [["override", cso, jsonURL]]); var prfx = "chrome/browser/search-extensions/", len = prfx.length; var names = ams.enumerateJAR(uri, `${prfx}*/$~${prfx}*/[^$]*`).map(n => n.slice(len, -1)); searchOrder.reverse(); var sel = {engines: []}, dlc = defaultEngine.toLowerCase(); var find = function(name) {return name.toLowerCase() == this} for(var name of names) { var lc = name.toLowerCase(); var engine = {webExtension: {id: lc + "@search.mozilla.org", locale: "default"}}; var ind = searchOrder.findIndex(find, lc); if (ind >= 0) engine.orderHint = ind + 1; sel.engines[lc == dlc ? "unshift" : "push"](engine); } Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsISearchService) .wrappedJSObject._fetchEngineSelectorEngines = async () => sel; })("chrome://browser/content/schemas/chrome_settings_overrides.json");
Еще вопрос, он не совсем по кнопкам. Я вешаю обработчик события onwheel на какой то элемент страницы. При этом мне не нужно, чтобы страница прокручивалась, мне надо поймать событие на элементе и все. В старых версиях ФФ я писал в функции event.preventDefault() и оно вроде помогало. Теперь не помогает. Причем я заметил, что если повернуть колесико буквально на один клик, то скролла вроде не происходит. Но с последующими кликами скролл уже есть.
Можно поконкретнее? Вот загружаю страницу с адресом:
data:text/html;charset=utf-8,%3C!DOCTYPE html%3E%0A%3Chtml%3E%0A%09%3Chead%3E%0A%09%09%3Ctitle%3ETest%3C%2Ftitle%3E%0A%09%09%3Cmeta http-equiv%3D"Content-Type" content%3D"text%2Fhtml%3B charset%3Dutf-8"%3E%0A%09%3C%2Fhead%3E%0A%09%3Cbody%3E %0A%09%09%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%0A%09%0A%09%09%3Ccenter%3E%3Cdiv%0A%09%09%09id%3D"target"%0A%09%09%09style%3D"width%3A 300px%3B height%3A 200px%3B border%3A 3px solid red%3B background-color%3A yellow%3B"%0A%09%09%3E%3C%2Fdiv%3E%3C%2Fcenter%3E%0A%0A%09%09%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%0A%09%09%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%0A%09%09%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%3Ch1%3E0%3C%2Fh1%3E%0A%09%3C%2Fbody%3E%0A%3C%2Fhtml%3E
document.getElementById("target").onwheel = function(e) { e.preventDefault(); this.style.transform = `rotate(${String(Math.random()).slice(2, 5)}deg`; }
Отредактировано Dumby (28-02-2021 07:11:38)
Отсутствует
Одни запросто , другие выделываются..
Вот именно... Дык я не понял, ты кнопку Жор памяти в МБ, таки зажал, или у тебя просто руки не доходят?
Отсутствует
voqabuhe
Тогда пожалуйста
/*Initialization Code*/ // ==================================================================================== // Memory Monitor ................................ // https://forum.mozilla-russia.org/viewtopic.php?id=52237 // ==================================================================================== var idbut=this.id; var urlbar = document.getElementById("page-action-buttons"); var button = document.getElementById(idbut); urlbar.insertBefore(button, urlbar.Child); var style = custombutton.buttonGetHelp(self).replace(/id/g, _id); var uri = makeURI('data:text/css,'+ encodeURIComponent(style)); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); // Подсказка кнопки ................................ this.tooltipText = "ЛКМ: Очистить Память"; // Настройка функций кликов мыши для кнопки ................................ this.onclick = this.oncontextmenu = function(event) { if (event.button == 0) { var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\memred\\start.vbs"); file.launch(); } }; this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() }; // Показывать потребление памяти на текущей кнопке (function () { self.timer = setInterval(function() { var memory = getMemory(); self.label = getMemory() if ( memory > 770 ) { var file = Services.dirsvc.get('ProfD', Ci.nsIFile); file.initWithPath(file.path + "\\memred\\start.vbs"); file.launch(); } }, 2000 ); // Получить всю занимаемую оперативную память в MB .... function getMemory() { var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); try { var e = reporterManager.enumerateReporters(); while ( e.hasMoreElements() ) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); self[mr.path] = mr; } var memory = self["resident"].amount; } catch(e) { var memory = reporterManager.resident; } // FF26 - Nightly return ( Math.round( memory/1048576 ) ); }; // Стиль добавляет текст на кнопку .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ %button% .toolbarbutton-icon {\ display: none !important;\ }\ %button% .toolbarbutton-text {\ display: -moz-box !important;\ }\ %button% {\ -moz-box-orient: horizontal !important;\ }\ '.replace(/%button%/g, "#" + _id) )); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); // Удалять счётчик памяти и другие изменения .... addDestructor(function() { try { window.clearTimeout( self.timer ) } catch(e) {}; }); })();
Отсутствует
Dumby
Все поисковики встали. Нашел способ. Теперь проблема .Их много и аддон "поиск из контекста"
https://addons.mozilla.org/ru/firefox/s … t%20Search берет все поисковики скопом, на отключенные не реагирует.
Кнопка была и давно того...сдохла. А нужна...
Отсутствует