То есть предварительно, надо создать этот файл alternative_searchbar.uc.js ?
Вы уж простите старика. Ну тупой я для такого. Общение с программером, для меня все равно что с китайцем.
Не понимаю я всего этого "//>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>>
loadscript("alternative_searchbar.uc.js", win);"
PS Создал alternative_searchbar.uc.js
Вписал по инструкции код загрузчика
Даже вручную добавил код сперва с одной ссылки, а потом попробовал с другой
сделать можно если этот не устроит
85+ https://github.com/Aris-t2/CustomJSforF … hbar.uc.js
или78-84 https://github.com/Aris-t2/CustomJSforF … _old.uc.js
Поиск не изменился. Понятно что туплю. Вопрос где?
Отредактировано vv07 (09-07-2021 02:34:01)
Отсутствует
Понятно что туплю. Вопрос где?
Мне это не ведомо, всё разжёвано не знаю что и добавить,
разве что очевидное включить в настройках custom_script_win.js забыл написать.
Но если человек который пользуется блокнотом вместо нормального редактора то может быть всё что угодно
Я сразу не заметил этого, но часть кода кириллицей,
почему то сохранилась кракозябрами.
PS Создал alternative_searchbar.uc.js
вам лучше скачать, на github есть кнопка Raw потом в меню сохранить как...
Вписал по инструкции код загрузчика
короче выложите архив папки user_chrome_files куда-нибудь тогда будет видно что вы там наделали
Отредактировано Vitaliy V. (09-07-2021 13:10:34)
Отсутствует
разве что очевидное включить в настройках custom_script_win.js забыл написать.
Ну не настолько уж туп
Вы лучше скажите, как сие должно работать.
Зашел я по ссылке и что? Скрипт сам должен загрузиться?
Или я что то должен еще проделать?
Ваши инструкции выполнил качественно.
вам лучше скачать, на github есть кнопка Raw потом в меню сохранить как...
Положил по очереди оба файла в папку custom_scripts. Реакции ноль
Отсутствует
Ваши инструкции выполнил качественно.
Если бы это было так, тогда бы всё получилось как на скриншоте
Зашел я по ссылке и что? Скрипт сам должен загрузиться?
Вот этот вопрос просто ставит в тупик, китайца проще понять...
Положил по очереди оба файла в папку custom_scripts. Реакции ноль
Какие ещё два файла я дал ссылки для разных версий вы что не в курсе какая у вас версия?!
Короче мне просто некогда заниматься ерундой когда даже просьба выложить архив папки, игнорируется
или хотя бы содержимое вашего custom_script_win.js под спойлер.
Отсутствует
Vitaliy V.
Я же сказал, что по очереди, а не оба сразу. Как вы посоветовали сделать
вам лучше скачать, на github есть кнопка Raw потом в меню сохранить как...
У меня там нет ничего секретного. Сейчас закину на облако
Отсутствует
Сейчас закину на облако
Итак вот его содержимое
// Этот скрипт работает в главном окне браузера если включено в настройках var ucf_custom_script_win = { initialized: false, get unloadlisteners() { delete this.unloadlisteners; window.addEventListener("unload", this, { once: true }); return this.unloadlisteners = []; }, load() { if (this.initialized) return; this.initialized = true; // this.specialwidgets.init(); // <-- Special Widgets // this.autohidesidebar.init(); // <-- Auto Hide Sidebar /* ************************************************ */ // Здесь может быть ваш код который сработает по событию "load" не раньше /* ************************************************ */ }, handleEvent(e) { this[e.type](e); }, unload() { this.unloadlisteners.forEach(str => { try { this[str].destructor(); } catch (e) {} }); }, specialwidgets: { _timer: null, get Customizable() { delete this.Customizable; if ("createSpecialWidget" in CustomizableUI) return this.Customizable = CustomizableUI; var scope = null; try { scope = Cu.import("resource:///modules/CustomizableUI.jsm", {}).CustomizableUIInternal; } catch (e) { } return this.Customizable = scope; }, init() { if (!("CustomizableUI" in window) || !("gCustomizeMode" in window)) return; ucf_custom_script_win.unloadlisteners.push("specialwidgets"); window.addEventListener("customizationready", this); }, destructor() { window.removeEventListener("customizationready", this); }, handleEvent(e) { this[e.type](e); }, customizationchange() { clearTimeout(this._timer); this._timer = setTimeout(() => { this.createSpecialWidgets(); }, 1000); }, customizationready() { if (!this.Customizable) return; this.createSpecialWidgets(); window.addEventListener("customizationchange", this); window.addEventListener("customizationending", this); }, customizationending() { window.removeEventListener("customizationchange", this); window.removeEventListener("customizationending", this); }, createSpecialWidgets() { try { let fragment = document.createDocumentFragment(); if (this.findSpecialWidgets("spring")) { let spring = this.Customizable.createSpecialWidget("spring", document); spring.setAttribute("label", "Растягивающийся интервал"); fragment.append(gCustomizeMode.wrapToolbarItem(spring, "palette")); } if (this.findSpecialWidgets("spacer")) { let spacer = this.Customizable.createSpecialWidget("spacer", document); spacer.setAttribute("label", "Интервал"); fragment.append(gCustomizeMode.wrapToolbarItem(spacer, "palette")); } if (this.findSpecialWidgets("separator")) { let separator = this.Customizable.createSpecialWidget("separator", document); separator.setAttribute("label", "Разделитель"); fragment.append(gCustomizeMode.wrapToolbarItem(separator, "palette")); } gCustomizeMode.visiblePalette.append(fragment); } catch (e) {} }, findSpecialWidgets(string) { try { if (!gCustomizeMode.visiblePalette.querySelector(`toolbar${string}[id^="customizableui-special-${string}"]`)) return true; } catch (e) {} return false; } }, autohidesidebar: { events: ["dragenter", "drop", "dragexit", "MozLayerTreeReady"], init() { var sidebar = this.sidebar = document.querySelector("#sidebar-box"); if (!sidebar) return; for (let type of this.events) sidebar.addEventListener(type, this); ucf_custom_script_win.unloadlisteners.push("autohidesidebar"); var popup = this.popup = document.querySelector("#sidebarMenu-popup"); if (!popup) return; popup.addEventListener("popupshowing", this); }, destructor() { var sidebar = this.sidebar; for (let type of this.events) sidebar.removeEventListener(type, this); if (!this.popup) return; this.popup.removeEventListener("popupshowing", this); }, handleEvent(e) { this[e.type](e); }, MozLayerTreeReady(e) { if (e.originalTarget?.id == "webext-panels-browser" && !this.sidebar.hasAttribute("sidebardrag")) { window.addEventListener("mousedown", () => { this.drop(); }, { once: true }); this.dragenter(); } }, popupshowing() { this.popup.addEventListener("popuphidden", () => { this.drop(); }, { once: true }); this.dragenter(); }, dragenter() { if (!this.sidebar.hasAttribute("sidebardrag")) this.sidebar.setAttribute("sidebardrag", "true"); }, drop() { if (this.sidebar.hasAttribute("sidebardrag")) this.sidebar.removeAttribute("sidebardrag"); }, dragexit(e) { var sidebar = this.sidebar; var boxObj = sidebar.getBoundingClientRect(), boxScrn = !sidebar.boxObject ? sidebar : sidebar.boxObject; if ((!e.relatedTarget || e.screenY <= (boxScrn.screenY + 5) || e.screenY >= (boxScrn.screenY + boxObj.height - 5) || e.screenX <= (boxScrn.screenX + 5) || e.screenX >= (boxScrn.screenX + boxObj.width - 5)) && sidebar.hasAttribute("sidebardrag")) sidebar.removeAttribute("sidebardrag"); } }, }; if (window.document.readyState != "complete") { window.addEventListener("load", function load() { ucf_custom_script_win.load(); }, { once: true }); } else ucf_custom_script_win.load(); (async () => { var loadscript = (relpath, obj) => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, obj, "UTF-8"); return true; } catch(e) { } return false; }, load_scripts_by_url = { browser: win => { //>>>>>>>>>>| Этот блок требуется для боковой панели и др., очистите строку ниже если он нужен |>>>>>>>>>> /* var box = document.querySelector("#browser") || window; var listener = e => { var doc = e.target || ({}); load_scripts_by_url[doc.documentURI]?.(doc.defaultView); }; box.addEventListener("pageshow", listener); this.loadscriptswinandsidebar = { destructor() { box.removeEventListener("pageshow", listener); } }; this.unloadlisteners.push("loadscriptswinandsidebar"); /* <<<<<<<<<<<<<<<<<<<< */ //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>> loadscript("ucf_user_script.js", this); loadscript("ucf_SidebarTabs.js", this) && this.unloadlisteners.push("sidebar_tabs"); //<<<<<<<<<<<<<<<<<<<< }, //>>>>>>>>>>| Загрузка скриптов для др. документов |>>>>>>>>>> "chrome://browser/content/places/bookmarksSidebar.xhtml": win => { // боковая панель закладок }, "chrome://browser/content/places/historySidebar.xhtml": win => { // боковая панель истории }, //<<<<<<<<<<<<<<<<<<<< }; load_scripts_by_url.browser(window); })();
Попробую ещё раз, понятно что 60 лет но глаза то у вас видят или нет?
Вот код загрузчика изменять уже ничего не надо
(async () => { var loadscript = (relpath, obj) => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, obj, "UTF-8"); return true; } catch(e) { } return false; }, load_scripts_by_url = { browser: win => { //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>> loadscript("alternative_searchbar.uc.js", win); //<<<<<<<<<<<<<<<<<<<< }, }; load_scripts_by_url.browser(window); })();
Да и перезапуск с очисткой не забудьте
Отредактировано Vitaliy V. (10-07-2021 00:53:43)
Отсутствует
Vitaliy V.
Все. Спасибо. Больше не буду беспокоить.
Бесполезно все это. Ни хрена не выходит.
Раз тупой, буду сидеть на том, что есть.
Удачи вам!
Добавлено 10-07-2021 01:56:26
Может хотя бы кнопку Search and open, кто поправит для FF84
Отредактировано vv07 (10-07-2021 01:56:26)
Отсутствует
vv07
Попробуйте по методу xiaoxiaoflood
Вот готовое решение scripts.7z
1. Заменить или добавить файлы из архива (где находится папка профиля показано на скринах)
2. Очистить кэш запуска (показано на скринах)
3. Подключить нужный скрипт через кнопку на панели (показано на скринах)
4. В самом файле alternative_searchbar.uc.js или alternative_searchbar_fx78-84_old.uc.js тоже есть настройки
Например
var show_search_engine_names = true; // show search engine names (true) or not (false)
Отредактировано momo2000 (10-07-2021 08:49:01)
Отсутствует
momo2000
И вам спасибо. Не стоит больше тратить время на эту тему.
Подозреваю, что проблема непосредственно в самом браузере, чисто индивидуально.
Ваш вариант срабатывает частично. Постараюсь подробнее.
В момент включения, через меню кнопки, появляются иконки, но после перезагрузки пропадают.
Попытка включить по новой, дает результат, через несколько ребутов и снова пропадает.
Отсутствует
vv07
В самом файле alternative_searchbar.uc или alternative_searchbar_fx78-84_old.uc.js измените настройки и поисковики будут отображаться правильно сразу после запуска.
Кстати, гляньте и другие скрипты, через userChromeJS Manager от xiaoxiaoflood их легко подключать
Отсутствует
momo2000
Хорошо, попробую поэкспериментировать.
Просто изначально речь шла, только var show_search_engine_names = true; // show search engine names (true) or not (false)
И вот еще что. Только сейчас заметил, что исчезла кнопка с панели. Осталась в меню, но как то неудобно
Почему такое могло произойти и как вернуть? Подскажите пожалуйста
PS Есть все таки правда в этой никчемной жизни
Хоть и не совсем так, как на старых версиях (иконки справа почему то), но и то хлеб.
Браво momo2000
Отредактировано vv07 (10-07-2021 13:52:13)
Отсутствует
vv07
Тада все false кроме old_search_engine_selection_popup
var clear_searchbar_after_search = false; // clear input after search (true) or not (false) var revert_to_first_engine_after_search = false; // revert to first engine (true) or not (false) var old_search_engine_selection_popup = true; // show old search engine selection popup (true) or not (false) var select_engine_by_scrolling_over_button = false; // select search engine by scrolling mouse wheel over search bars button (true) or not (false) var select_engine_by_click_oneoffs_button = false; var hide_oneoff_search_engines = false; // hide 'one off' search engines (true) or not (false) var hide_addengines_plus_indicator = false; // hide add engines '+' sign (true) or not (false) var hide_placeholder = false; // hide placeholder (true) or not (false) var switch_glass_and_engine_icon = false; // swap icons of search engine button and go button (true) or not (false) var show_search_engine_names = false; // show search engine names (true) or not (false) var show_search_engine_names_with_scrollbar = false; // show search engine names with scrollbars (true) or not (false) var show_search_engine_names_with_scrollbar_height = '170px'; // higher values show more search engines var initialization_delay_value = 100; // some systems might require a higher value than '1' second (=1000ms) and on some even '0' is enough var searchsettingslabel = "Change Search Settings";
Это настройки самой панели, например
var clear_searchbar_after_search = false если поставить true ,то очищать поле сразу после поиска, неудобно, если искать по нескольким поисковикам
revert_to_first_engine_after_search = false если поставить true ,то сразу после поиска вернётся на дефолтный поисковик, тоже неудобно, или нет)
var old_search_engine_selection_popup = false это как раз true, чтобы поисковики были списком
var hide_addengines_plus_indicator = false если поставить true, то скроется значок добавления поисковика, когда на сайте есть такая возможность( маленький зеленый плюс на значке, который отвлекает)
var switch_glass_and_engine_icon = false если поставить true, то значок поисковика переместится вправо, как на вашем скрине
ит.д. остальные я не разбирался)
Отредактировано momo2000 (10-07-2021 15:41:03)
Отсутствует
Тада все false кроме old_search_engine_selection_popup
Здорово
PS А у вас нет случайно контакта с автором? Может он сможет сварганить, полосу прогресса?
Я спрашивал http://forum.mozilla-russia.org/viewtop … 08#p792308, но никто не взялся увы.
Отредактировано vv07 (11-07-2021 05:17:25)
Отсутствует
vv07
Гляньте расширение Load Progress Bar
В настройках можно изменить цвет, ширину и положение верх-низ
Это, конечно, не то что нужно, но всё же)
Отсутствует
momo2000
Я как раз его и поставил на замену. Но это действительно не то. Можно сказать, вообще другое оформление.
Прежний в виде перемещаемого бара, который можно поставить на любую панель, гораздо удобнее был.
Ну и качественнее работал.
Ладно. Жаль очень, Хотя и не единственная потеря. Пожалуй самого недостающего расширения,
которого реально будет не хватать. Это почтовый клиент Simple Mail.
Без остального как нибуть проживу. Хотя тяжело очень, когда привыкаешь к определеному функционалу.
Спасибо за помощь
Отсутствует
del.
Отредактировано egorsemenov06 (11-07-2021 22:44:58)
Отсутствует
Вот в 91 выпилили nsIEditorObserver, и будет мусор в консоли
при переходе по первым трём вкладкам в CB-редакторе, надо бы 18-ю собрать сподобиться.
И ещё document.popupNode, а расширение его устанавливает.
Нет, ну ничего страшного, просто как-то неправильно получается.
Custom Buttons 0.0.7.0.0.18, paxmod и bootstrap в zip-папке.
Отсутствует
Установил v.90.0 и перестала работать кнопка:
— Автоматически очистить панель поиска после запуска поиска Enter.
(Колесиком мыши работает.)
Dumby
Если возможно, подправьте пожалуйста.
(bar => { if (!bar) return; var events = ["mouseenter", "focus"], init = e => { for(var type of events) removeEventListener(type, init, false, bar); var key = "telemetrySearchDetails", value = bar[key], hasListener, btn; var box = bar.textbox, set = (o, k = "value", v = "") => o[k] = v; var clear = () => setTimeout(() => set(box), 50, hasListener = box.popup.removeEventListener("popuphidden", clear, false)); Object.defineProperty(bar, key, { configurable: true, enumerable: true, get: () => value, set(val) { val === null && !hasListener && setTimeout(() => { if (box.popup.state != "open") set(box); else hasListener = !box.popup.addEventListener("popuphidden", clear, false); }, 50); return value = val; } }); addDestructor(() => delete bar[key] && set(bar, key, value)); if (!(btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button"))) return; var hm = e => e.ctrlKey || e.shiftKey || e.altKey || e.metaKey; addEventListener("click", e => !Services.prefs.getBoolPref("browser.search.openintab") || e.button || hm(e) || e.originalTarget != btn || e.stopPropagation(btn.dispatchEvent(new MouseEvent("click", {ctrlKey: true, metaKey: true}))) , true, btn.parentNode); addEventListener("contextmenu", e => hm(e) || e.preventDefault(set(box)), false, btn); } for(var type of events) addEventListener(type, init, false, bar); })(BrowserSearch.searchBar); // Очистить панель адреса или поиска прокруткой колёсиком мыши на панели ["urlbar", "searchbar"].forEach(el=> document.getElementById(el).onwheel=e=> e.target.value = "");
Отсутствует
Dumby.
Вы когда-то по моей просьбе написали вот такой код: https://forum.mozilla-russia.org/viewto … 48#p781048
Возможно ли его переделать под 90 версию ?
«The Truth Is Out There»
Отсутствует
— Автоматически очистить панель поиска после запуска поиска Enter.
Тогда Enter и надо отслеживать
(sel => { var sb = document.getElementById("searchbar") || gNavToolbox.palette.querySelector("#searchbar"); var clear = () => sb.value = ""; addEventListener("keydown", e => e.key != "Enter" || e.repeat || !sb.value || sb.textbox.popup.querySelector(sel) || setTimeout(clear, 100) , true, sb || 1); })(':is(#searchbar-anon-search-settings,.searchbar-engine-one-off-add-engine)[selected=true]');
Возможно ли его переделать под 90 версию
?
Лучше бы сначала в CSS-теме спросить,
может это стилем можно сделать.
(function tlcrop(ctor) { var mod = (prop, repls) => { var desc = Object.getOwnPropertyDescriptor(ctor, prop); var {get, value} = desc, newDesc = {...desc}; var txt = get ? `(${get})`.replace("get", "function") : value; for(var repl of repls) txt = txt.replace(...repl); get ? newDesc.get = eval(txt) : newDesc.value = txt; Object.defineProperty(ctor, prop, newDesc); return desc; } var n = document.createElement("n"), s = new XMLSerializer(); var enc = attr => { n.setAttribute("a", attr); return s.serializeToString(n).slice(43, -6); } var formatter = new Localization(["browser/browser.ftl"], true); var markup = mod("markup", [ [/<label /g, '$&crop="end" flex="1" '], [ /data-l10n-id="(browser-tab-audio-[^"]+)"/g, (s, id) => `value="${enc(formatter.formatValueSync(id))}"` ] ]); var attrs = mod("inheritedAttributes", [[/text=label/g, "$&,value=label"]]); var reInitTabs = () => { delete ctor._fragment; delete ctor._flippedInheritedAttributes; for(var tab of gBrowser.tabs) delete tab._initialized, tab.initialize(); } reInitTabs(); var proto = ctor.prototype, key = "setSecondaryTabTooltipLabel", func = proto[key]; var setVal = lab => lab.setAttribute("value", lab.textContent); proto[key] = function() { func.apply(this, arguments); setTimeout(setVal, 50, this.querySelector(".tab-icon-sound-tooltip-label")); } var topic = "intl:app-locales-changed"; var obs = () => { var ind = self._destructors.findIndex(d => d.destructor == destructor); self._destructors.splice(ind, 1); destructor(); tlcrop(ctor); } var destructor = () => { proto[key] = func; Services.obs.removeObserver(obs, topic); Object.defineProperty(ctor, "markup", markup); Object.defineProperty(ctor, "inheritedAttributes", attrs); reInitTabs(); } addDestructor(destructor); Services.obs.addObserver(obs, topic); })(gBrowser.selectedTab.constructor);
Отсутствует
Лучше бы сначала в CSS-теме спросить,
может это стилем можно сделать.скрытый текстВыделить кодКод:
(function tlcrop(ctor) { var mod = (prop, repls) => { var desc = Object.getOwnPropertyDescriptor(ctor, prop); var {get, value} = desc, newDesc = {...desc}; var txt = get ? `(${get})`.replace("get", "function") : value; for(var repl of repls) txt = txt.replace(...repl); get ? newDesc.get = eval(txt) : newDesc.value = txt; Object.defineProperty(ctor, prop, newDesc); return desc; } var n = document.createElement("n"), s = new XMLSerializer(); var enc = attr => { n.setAttribute("a", attr); return s.serializeToString(n).slice(43, -6); } var formatter = new Localization(["browser/browser.ftl"], true); var markup = mod("markup", [ [/<label /g, '$&crop="end" flex="1" '], [ /data-l10n-id="(browser-tab-audio-[^"]+)"/g, (s, id) => `value="${enc(formatter.formatValueSync(id))}"` ] ]); var attrs = mod("inheritedAttributes", [[/text=label/g, "$&,value=label"]]); var reInitTabs = () => { delete ctor._fragment; delete ctor._flippedInheritedAttributes; for(var tab of gBrowser.tabs) delete tab._initialized, tab.initialize(); } reInitTabs(); var proto = ctor.prototype, key = "setSecondaryTabTooltipLabel", func = proto[key]; var setVal = lab => lab.setAttribute("value", lab.textContent); proto[key] = function() { func.apply(this, arguments); setTimeout(setVal, 50, this.querySelector(".tab-icon-sound-tooltip-label")); } var topic = "intl:app-locales-changed"; var obs = () => { var ind = self._destructors.findIndex(d => d.destructor == destructor); self._destructors.splice(ind, 1); destructor(); tlcrop(ctor); } var destructor = () => { proto[key] = func; Services.obs.removeObserver(obs, topic); Object.defineProperty(ctor, "markup", markup); Object.defineProperty(ctor, "inheritedAttributes", attrs); reInitTabs(); } addDestructor(destructor); Services.obs.addObserver(obs, topic); })(gBrowser.selectedTab.constructor);
Dumby, спасибо. Как всегда всё отлично.
P.S. В прошлый раз, перед тем как я попросил вас написать код, я уже обращался в тему CSS. Там мне было отвечено, что такого сделать средствами CSS нельзя.
«The Truth Is Out There»
Отсутствует
Вставить и искать и по клику на стрелку
Добавил
(sel => { var sb = document.getElementById("searchbar") || gNavToolbox.palette.querySelector("#searchbar"); var clear = setTimeout.bind(window, () => sb.value = "", 75); addEventListener("keydown", e => e.key != "Enter" || e.repeat || !sb.value || sb.textbox.popup.querySelector(sel) || clear() , true, sb || 1); var sels = { click: ".search-go-button", command: ".searchbar-paste-and-search" }; var listener = e => e.button < 2 && e.target.matches(sels[e.type]) && clear(); for(var type in sels) addEventListener(type, listener, false, sb); })(':is(#searchbar-anon-search-settings,.searchbar-engine-one-off-add-engine)[selected=true]');
Отсутствует
В прошлый раз, перед тем как я попросил вас написать код, я уже обращался в тему CSS. Там мне было отвечено, что такого сделать средствами CSS нельзя.
Но теперь можно
.tab-label-container { mask: none !important; } .tab-secondary-label { overflow: hidden !important; } .tab-secondary-label > .tab-icon-sound-label, .tab-label-container > .tab-label { display: inline-block; -moz-box-flex: 1 !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; min-width: 0 !important; line-height: 1.25em !important; height: 1.25em !important; margin: 0 !important; } .tab-close-button { padding: 5px !important; width: 20px !important; height: 20px !important; } .tab-close-button:not(:hover) { padding-inline-start: 0 !important; width: 15px !important; }
Отредактировано Vitaliy V. (01-08-2021 18:51:14)
Отсутствует