Не работает на 128 dev и , а на 127 dev и старый код работает, Browser.reload(); никак не мешает. Только уведомления пустые были, просто галочка.
Отредактировано _zt (15-06-2024 21:45:46)
Отсутствует
Решил Sidebar Tabs в виде юзер скрипта добавить в UCF
Vitaliy V. или Dumby – кнопка-меню для Sidebar Tabs неудобна – адреса не изменить !
Просьба: в меню любой закладки на PlacesToolbarItems добавить «Открыть закладку в Sidebar Tabs»
Отсутствует
добавить
А в чём именно затруднение? Создаёшь и добавляешь.
Пишем, для начала, что-нибудь такое, и смотрим,
что не так, чего не хватает, и в какие окна загружать.
(async sel => { var sep = document.querySelector(sel); if (!sep) return; var popup = sep.parentNode; var menuitem = document.createXULElement("menuitem"); for(var args of Object.entries({ "node-type": "link", "selection-type": "single", label: "Открыть в Sidebar Tabs", id: "placesContext_open:sidebartabs", })) menuitem.setAttribute(...args); menuitem.addEventListener("command", () => { var {uri} = popup.triggerNode._placesNode || popup._view.selectedNode; Services.wm.getMostRecentBrowserWindow() .ucf_custom_script_win.ucf_sidebar_tabs.setPanel(4, uri); }); sep.before(menuitem); })("menupopup#placesContext > #placesContext_openSeparator");
Отсутствует
URL-bar History Dropmarker отвалился. Поправите?
(async ( id = Symbol("urlbarhistorydropmarker"), hidewhenusertyping = true, // скрывать dropmarker при вводе copyvalueistyped = true, // при вводе копировать содержимое адресной строки вместо URL currentURIlabel = "Адрес текущей страницы в буфере обмена!", valueIsTypedlabel = "Содержимое адресной строки в буфере обмена!", Ltooltiptext = "ЛКМ: Показать историю", Mtooltiptext = "СКМ: Обновить текущую страницу", // или false Rtooltiptext = "ПКМ: Копировать URL в буфер обмена", // или false ) => (this[id] = { dropmarker: null, pref: "browser.urlbar.suggest.history", get style() { delete this.style; return this.style = `data:text/css;charset=utf-8,${encodeURIComponent(` #urlbar .urlbar-history-dropmarker { list-style-image: url("chrome://global/skin/icons/arrow-down.svg") !important; transition: opacity 0.15s ease; } #urlbar[switchingtabs] > :is(#urlbar-input-container,.urlbar-input-container) > .urlbar-history-dropmarker { transition: none; } ${hidewhenusertyping ? `#urlbar[usertyping] > :is(#urlbar-input-container,.urlbar-input-container) > .urlbar-history-dropmarker { display: none; }` : ""} #nav-bar:not([customizing="true"]) > #nav-bar-customization-target > #urlbar-container:not(:hover) > #urlbar:not([focused]) > :is(#urlbar-input-container,.urlbar-input-container) > .urlbar-history-dropmarker { opacity: 0; } `)}`; }, get helper() { delete this.helper; return this.helper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper); }, init() { this.UrlbarProviderPlaces = ChromeUtils.importESModule("resource:///modules/UrlbarProviderPlaces.sys.mjs").UrlbarProviderPlaces; this.UrlbarProviderInputHistory = ChromeUtils.importESModule("resource:///modules/UrlbarProviderInputHistory.sys.mjs").UrlbarProviderInputHistory; Services.prefs.addObserver(this.pref, this); setUnloadMap(id, this.destructor, this); if (Services.prefs.getBoolPref(this.pref, false)) this.createDropmarker(); }, get tooltipText() { delete this.tooltipText; return this.tooltipText = `${Ltooltiptext}${Mtooltiptext ? `\n${Mtooltiptext}` : ""}${Rtooltiptext ? `\n${Rtooltiptext}` : ""}`; }, createDropmarker() { windowUtils.loadSheetUsingURIString(this.style, windowUtils.USER_SHEET); var dropmarker = this.dropmarker = document.createXULElement("image"); dropmarker.className = "urlbar-page-action urlbar-history-dropmarker urlbar-icon"; dropmarker.tooltipText = this.tooltipText; document.querySelector("#urlbar #page-action-buttons").before(dropmarker); dropmarker.addEventListener("mousedown", this); if (Rtooltiptext || Mtooltiptext) dropmarker.addEventListener("click", this); }, removeDropmarker() { this.removeListeners(); this.dropmarker.remove(); this.dropmarker = null; windowUtils.removeSheetUsingURIString(this.style, windowUtils.USER_SHEET); }, removeListeners() { this.dropmarker.removeEventListener("mousedown", this); if (Rtooltiptext || Mtooltiptext) this.dropmarker.removeEventListener("click", this); }, observe() { if (!this.dropmarker) { if (Services.prefs.getBoolPref(this.pref, false)) this.createDropmarker(); } else this.removeDropmarker(); }, handleEvent(e) { this[e.type](e); }, mousedown(e) { if (e.button) return; e.preventDefault(); e.stopPropagation(); if (gURLBar.view.isOpen) gURLBar.view.close(); else { if (!gURLBar.valueIsTyped) this.UrlbarProviderPlaces.getPriority = this.UrlbarProviderInputHistory.getPriority = function() { delete this.getPriority; return 3; }; gURLBar.focus(); gURLBar.startQuery(); } }, click(e) { if (e.button === 0) return; e.preventDefault(); e.stopPropagation(); if (e.button === 1 && Mtooltiptext) { BrowserCommands.reload(); return; } if (!Rtooltiptext) return; var url, val; if (!gURLBar.valueIsTyped || !copyvalueistyped) url = gURLBar.makeURIReadable(gBrowser.selectedBrowser.currentURI).displaySpec, val = currentURIlabel; else url = gURLBar.untrimmedValue, val = valueIsTypedlabel; this.helper.copyString(url); ConfirmationHint.show(this.dropmarker, "", { hideArrow: true }); ConfirmationHint._message.removeAttribute("data-l10n-id"); ConfirmationHint._message.textContent = val; }, destructor() { if (this.dropmarker) this.removeListeners(); Services.prefs.removeObserver(this.pref, this); }, }).init())();
Отсутствует
А в чём именно затруднение? Создаёшь и добавляешь.
С нуля делать не умею, изучал контекст-меню undoBookmarks, но это не совсем то…
Добавил в шапку версию Sidebar Tabs с поддержкой закладок (два скрипта в одном)
Отсутствует
(два скрипта в одном)
Напрасно, тебе же Dumby сделал чтобы не только в основном окне работало но также в библиотеке или в самом сайдбаре
подключить в scriptsallchrome.load
{ path: "places_context_open.js", urlregxp: /chrome:\/\/browser\/content\/(?:browser|places\/(?:bookmarksSidebar|historySidebar|places))\.xhtml/, },
Небольшое обновление Sidebar Tabs, устранил проблему в режиме автоскрытия, когда при открытии из меню не всегда срабатывало авто открытие
Отсутствует
Vitaliy V. Как добавить иконку в скрипт от Dumby https://forum.mozilla-russia.org/viewto … 77#p810077 и зарегистрировать ее в resource
Отсутствует
egorsemenov06
А обязательно новую добавлять? от Sidebar Tabs "resource://ucf_sidebar_tabs" лучше используйте чтобы одинаковые были,
добавить в Object.entries({
class: "menuitem-iconic", style: 'list-style-image:url("resource://ucf_sidebar_tabs");-moz-context-properties:fill,stroke,fill-opacity;stroke:currentColor;fill:currentColor;fill-opacity:var(--toolbarbutton-icon-fill-opacity,.8);',
Отсутствует
egorsemenov06
А обязательно новую добавлять? от Sidebar Tabs "resource://ucf_sidebar_tabs" лучше используйте чтобы одинаковые были,
добавить в Object.entries({скрытый текстВыделить кодКод:
class: "menuitem-iconic", style: 'list-style-image:url("resource://ucf_sidebar_tabs");-moz-context-properties:fill,stroke,fill-opacity;stroke:currentColor;fill:currentColor;fill-opacity:var(--toolbarbutton-icon-fill-opacity,.8);',
СПАСИБО БОЛЬШОЕ!!!!!Конечно лучше что бы одинаковые были.
Отсутствует
Vitaliy V.
Поставил крайние UserChromeFiles.zip + UserChromeFiles_Fix_115_ESR.zip
Раскомментировал user_chrome_files\custom_scripts\sidebar_tabs.js, установил значение
AUTO_HIDE = false, // Auto hide
Теперь боковая панель сдвигает Sidebar Tabs, а раньше выезжала поверх. Мне кажется, поверх было симпатичнее, ничего не дёргалось. Так задумано или я что-то не донастроил?
https://imgur.com/XLdI2YS
Отсутствует
Так задумано
Да. Тут надо определится, почему то панель закладок или доп. панель не должна перекрывать там же тоже дергается, а вертикальная панель должна?!
Но ладно добавил настройку
https://github.com/VitaliyVstyle/VitaliyVstyle.github.io/blob/main/UserChromeFiles/chrome/user_chrome_files/custom_scripts/sidebar_tabs.js#L43
Отсутствует
Vitaliy V. сделайте пожалуйста из этих 2-х кнопок одну
// Автоматически открывать меню у некоторых кнопок............... (this.mouseoveropentoolbarbutton = { delay: 350, get buttonID() { delete this.buttonID; return this.buttonID = new Map([ ["PanelUI-menu-button", "appMenu-popup"], ["star-button", "editBookmarkPanel"], ["unified-extensions-button", "unified-extensions-panel"], ]); }, get timer() { delete this.timer; return this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); }, init(that) { var arrayelem = this.arrayelem = document.querySelectorAll(` #star-button, #PanelUI-menu-button, #unified-extensions-button `); for (let elem of arrayelem) elem.addEventListener("mouseover", this); that.unloadlisteners.push("mouseoveropentoolbarbutton"); }, handleEvent(event, node = event.target) { this.openPopup(node, this.buttonID.get(node.id)); }, openPopup(node, popupID) { this.timer.cancel(); this.timer.initWithCallback(() => { if (node.open) return; if (this.curbut?.open) { this.curbut.menupopup ? this.curbut.menupopup.hidePopup() : document.querySelector(`panel[viewId='${this.curid}'], panel[id='${this.curid}'], menupopup[id='${this.curid}']`)?.hidePopup(); } else document.querySelector(":is(menupopup,panel)[panelopen='true'], toolbarbutton[open='true'] > menupopup")?.hidePopup(); this.curbut = node; this.curid = popupID; node.click(); }, this.delay, Ci.nsITimer.TYPE_ONE_SHOT); node.addEventListener("mouseleave", () => { this.timer.cancel(); }, { once: true }); }, destructor() { for (let elem of this.arrayelem) elem.removeEventListener("mouseover", this); }, }).init(this);
//Автоматически закрывать меню (async bmrk => { await delayedStartupPromise; var popupshown = e => { var trg = e.target; if (trg.nodeName.startsWith("t")) return; var {curid, curbut} = autopopup; if (curid && trg.id == curid || curbut && ( curbut.className == "bookmark-item" && trg.matches(bmrk) || curbut.open && curbut.contains(trg.anchorNode || trg) && (curbut.type != "menu" || curbut.menupopup) )) trg.addEventListener("mouseleave", mouseleave), trg.addEventListener("popuphidden", popuphidden); } var popuphidden = function(e) { if (e.target == this) this.removeEventListener("mouseleave", mouseleave), this.removeEventListener("popuphidden", popuphidden); } var tid; var mouseleave = e => { tid && clearTimeout(tid); tid = setTimeout(check, 850, e.target); } var check = popup => { tid = null; popup.closest(":is(menupopup,panel):hover") || autopopup.curbut?.matches(":hover") || (popup.nodeName.startsWith("m") ? closeMenus(popup) : popup.hidePopup()); } var autopopup = ucf_custom_script_win.mouseoveropentoolbarbutton; var {destructor} = autopopup; autopopup.destructor = () => { destructor.call(autopopup); removeEventListener("popupshown", popupshown); } addEventListener("popupshown", popupshown); })("toolbarbutton.bookmark-item :scope");
Отредактировано egorsemenov06 (Сегодня 12:01:54)
Отсутствует
egorsemenov06
` get buttonID() { delete this.buttonID; return this.buttonID = new Map([ ["PanelUI-menu-button", "appMenu-popup"], ["star-button", "editBookmarkPanel"], ]); },
` get buttonID() { delete this.buttonID; return this.buttonID = new Map([ ["PanelUI-menu-button", "appMenu-popup"], ["library-button", "customizationui-widget-panel"], ["fxa-toolbar-menu-button", "customizationui-widget-panel"], ["nav-bar-overflow-button", "widget-overflow"], ["unified-extensions-button","toolbarbutton-1"], ["star-button", "editBookmarkPanel"], ["pageActionButton", "pageActionPanel"], ]); },
Добавлено Вчера 19:29:28
если можно из этих 2-х кнопок сделать одну
А тестировать как, а по мне можно два в одном, ну тобошь в один файл.
Отредактировано Farby (Вчера 19:29:28)
Жизнь иногда такое выкидывает, что хочется подобрать...
Отсутствует
egorsemenov06
скрытый текстВыделить кодКод:
` get buttonID() { delete this.buttonID; return this.buttonID = new Map([ ["PanelUI-menu-button", "appMenu-popup"], ["star-button", "editBookmarkPanel"], ]); },
у меня так, но для вас может быть много лишнего...скрытый текстВыделить кодКод:
` get buttonID() { delete this.buttonID; return this.buttonID = new Map([ ["PanelUI-menu-button", "appMenu-popup"], ["library-button", "customizationui-widget-panel"], ["fxa-toolbar-menu-button", "customizationui-widget-panel"], ["nav-bar-overflow-button", "widget-overflow"], ["unified-extensions-button","toolbarbutton-1"], ["star-button", "editBookmarkPanel"], ["pageActionButton", "pageActionPanel"], ]); },Добавлено Вчера 19:29:28
egorsemenov06 пишетесли можно из этих 2-х кнопок сделать одну
А тестировать как, а по мне можно два в одном, ну тобошь в один файл.
у нас вами кнопки похоже отличаються поэтому у меня не работает то что Вы мне дали.Эти 2-е кнопки у меня и так в одном файле но по мне лучше сделать один скрипт поэтому я и попросил
Vitaliy V. это сделать ,если возможно
Отсутствует
["unified-extensions-button","toolbarbutton-1"],
Это что ещё за дичь?
Не работает, и не может работать.
Работает добавить #unified-extensions-button
к другим двоим таким же, начинающимся с решётки
#star-button,
#PanelUI-menu-button(,)...
А ["unified-extensions-button", "unified-extensions-panel"],
стоит добавить лишь в том смысле, чтобы панелька,
в некоторых случаях, закрывалась.
STR: наводим указатель мыши на аддонскую кнопку.
Панелька этой аддонской кнопки открывается.
Теперь, не сходя с места, наводим указатель мыши
на кнопку гамбургера.
Гамбургерская панелька открывается.
При этом, аддонская панелька остаётся торчать открытой.
А если добавить, то аддонская панелька,
в этом случае, будет закрываться.
Кстати, недавно, запилили метод nsIAppWindow.rollupAllPopups()
Схлопывает все менюшки разом, если может вдруг интересно.
Отсутствует
Farby пишет["unified-extensions-button","toolbarbutton-1"],
Работает добавить #unified-extensions-button
к другим двоим таким же, начинающимся с решётки
#star-button,
#PanelUI-menu-button(,)...А ["unified-extensions-button", "unified-extensions-panel"],
стоит добавить лишь в том смысле, чтобы панелька,
в некоторых случаях, закрывалась.Кстати, недавно, запилили метод nsIAppWindow.rollupAllPopups()
Схлопывает все менюшки разом, если может вдруг интересно.
Спасибо!!!
Отсутствует