Dumby
Здравия! Сделайте пожалуйста что бы этот скрипт: https://forum.mozilla-russia.org/viewto … 03#p776503 работал в актуальных версиях !
P,S, и только для открытия истории из журнала и боковой панели в новой вкладке.
Win7
Отсутствует
kokoss
У меня нет userChrome.js, нужно железное обоснование (и ссылка),
почему именно userChrome.js, ведь у тебя есть UCF.
Недавно же sandro79 обращал наше внимание на то,
что в 96 отвалился ucf_wheretoopenlink.js. А отвалился он потому,
что Bug 1742801 «move whereToOpenLink and getRootEvent implementations into BrowserUtils».
Я тогда попытался набросать новый вариант, и вот теперь уже,
переделать под только Журнал (боковушка ведь тоже озаглавлена как Журнал).
Так что, если хочешь, попробуй (это в custom_script.js).
(async sel => { var trees = ["places", "historySidebar"]; var url = "resource://gre/modules/BrowserUtils.jsm"; var bu = ChromeUtils.import(url).BrowserUtils, {whereToOpenLink} = bu; bu.whereToOpenLink = function(e) { var res = whereToOpenLink.apply(bu, arguments); if (res != "current" || !Event.isInstance(e)) return res; try { var skip = true, trg = e.composedTarget, win = trg.ownerGlobal; var name = win.document.documentURIObject .QueryInterface(Ci.nsIURL).fileName.slice(0, -6); if (name == "browser") skip = win.gBrowser.selectedTab.isEmpty || !trg.closest(sel); else if (trees.includes(name)) skip = (win.opener || win.windowRoot.ownerGlobal).gBrowser.selectedTab.isEmpty || trg.closest("tree").selectedNode.itemId != -1; return skip ? res : "tab"; } catch {return res;} } })("#historyMenuPopup,#PanelUI-history");
Отсутствует
Dumby
Класс, при чём работает и в старой версии UCF!!! Благодарю
Add, всё же придётся перейти на актуальную версию UCF, в ней этот скрипт работает правильно!
Отредактировано kokoss (29-04-2022 22:24:59)
Win7
Отсутствует
Так что, если хочешь, попробуй (это в custom_script.js)
Благодарю за замену для ucf_wheretoopenlink.js для 96+
Работает по журналу отлично: с окна библиотеки, с боковой панели, с меню бутерброда, с вкладки chrome://browser/content/places/places.xhtml, в общем везде где есть журнал.
Работает как с user_chrome_files, так и с этим комплектом - одинаково, что меня очень обрадовало. Надо будет ещё с этим комплектом потестить.
Dumby, ну сделайте пожалуйста подобный компактный (873 байт) скрипт для версий < 96. По идее должен будет наверно и в 78 работать.
И огромноая благодарность Вам за кнопку «вывести на кнопку индикацию muted-состояния активной вкладки» Тоже забрал на замену, работает отлично!
Отсутствует
Работает как с user_chrome_files, так и с этим комплектом - одинаково, что меня очень обрадовало.
А меня это огорчает. Сколько раз было сказано,
что коды для для custom_script.js не следует совать в окна.
Но, видимо, это слишком сложная мысль.
Я даже не понимаю зачем это может понадобиться,
какой-то поиск приключений браузеру на ...
подобный компактный (873 байт) скрипт для версий < 96
Кстати, в скрипте есть баг: в Библиотеке, в закладках,
в новой вкладке также открывается добро исторических кверей,
типа «Двадцать часто посещаемых», а это не есть Журнал.
Вобщем, запишу пока вместе с багом, который перекочует
и в боковую панель закладок, а ты выскажись, надо с этим
что-нибудь делать, или фиолетово, или может даже сойдёт за фичу.
Код для custom_script_win.js (вот его можно во всяких там комплектах проверять).
Набирал из-под 77, в 98 вроде тоже работает.
(async sel => { var wtol = whereToOpenLink; whereToOpenLink = function whereToOpenLink(e) { var res = wtol.apply(window, arguments); return res == "current" && !gBrowser.selectedTab.isEmpty && Event.isInstance(e) && e.composedTarget.closest(sel) ? "tab" : res; } var puu = PlacesUIUtils, key = "openNodeWithEvent"; if (puu[key].name.startsWith("b")) return; var bt = Object.create(puu), bwt = BrowserWindowTracker; bt._openNodeIn = (node, where, win) => { if (where == "current" && node.itemId == -1 && !(win.opener || bwt.getTopWindow()).gBrowser.selectedTab.isEmpty ) where = "tab"; puu._openNodeIn(node, where, win); } puu[key] = puu[key].bind(bt); })("#goPopup,#historyMenuPopup,#PanelUI-history");
Отсутствует
А меня это огорчает. Сколько раз было сказано, что коды для для custom_script.js не следует совать в окна
Да, это я припоминаю, но как запасной вариант что ли, так то вроде нормально работает в классических комплектах, ну навскидку. Впредь буду осмотрительней.
типа «Двадцать часто посещаемых», а это не есть Журнал
Да это не страшно, мелочи, пусть как фича будет.
Код для custom_script_win.js (вот его можно во всяких там комплектах проверять)
Скрипт подключал в custom_script_win.js в 69 и 78, в 91 и 98 в CustomStylesScripts.jsm в scriptschrome: { // Для докум. окна браузера [ChromeOnly]
Везде всё проверил, вроде всё как надо, работает везде по журналу, ну по мне - получилось отлично.
В основном использую журнал из автоскрываемой боковой панели, с журнала панели меню и значка в виде часов, размещённого на панели меню.
Огромное Спасибо!
Отсутствует
казявка
Уж не знаю что за Цент,
а для лисы как-то так, наверно
(async (id, url) => { if (location != url) return; var menuitem = document.createXULElement("menuitem"); document.getElementById(id).after(menuitem); var hidden = () => !nsContextMenu.contentData.context.linkTextStr; menuitem.hidden = true; menuitem.render = () => { if (hidden()) return; menuitem.hidden = false; menuitem.id = id + "text"; menuitem.label = "Скопировать текст ссылки"; menuitem.setAttribute("oncommand", "navigator.clipboard.writeText(gContextMenu.linkTextStr);"); delete menuitem.render; menuitem.render(); menuitem.render = () => menuitem.hidden = hidden(); } })("context-copylink", "chrome://browser/content/browser.xhtml");
Отредактировано Dumby (19-08-2023 09:47:19)
Отсутствует
Dumby
ВЫ волшебник! я неделю наверно искал в гугле в яндексе как так сделать и не нашел и пришлось ставить расширение Copy Link Text - а ВЫ на коленке сделали мою мечту - кладу ВАМ в карман огромное БЛШ СПС!
Отсутствует
а для лисы как-то так, наверно
Если этот скрипт прописать в userChrome.js от Aris-t2 или Endor8, то при каждом открытии главной консоли (Ctrl + Shift + J) такая ошибка:
Uncaught (in promise) TypeError: document.getElementById(...) is null
хотя это не мешает работе, т.е. текст ссылки копируется
Отсутствует
Uncaught (in promise) TypeError: document.getElementById(...) is null
Да, точно! userChrome же.
Следует проверять, что это именно документ окна браузера.
Я избалован UCF'ским custom_script_win.js, где такая проверка не требуется,
вот и вылетело из головы. Подправил.
Отсутствует
@Dumby
Здравствуйте. У вас есть скрипт под ucf, добавляющий функцию открытия встроенного родного прогресса загрузки файла при старте загрузки, а не по ее окончании
https://forum.mozilla-russia.org/viewto … 32#p801732
В Firefox v115 он уже не работает, но я даже не об этом. Просьба адаптировать его, чтобы он работал в среде Aris-t2. Благодарю. Речь о встроенном окне загрузки в виде поп-апа, а не о классическом самостоятельном окне загрузки.
Отредактировано fuchsfan (20-08-2023 13:56:07)
Отсутствует
Здравствуйте. У вас есть скрипт под ucf, добавляющий функцию открытия встроенного родного прогресса загрузки файла при старте загрузки, а не по ее окончании
https://forum.mozilla-russia.org/viewto … 32#p801732
В Firefox v115 он уже не работает
Ну почему не работает, у меня работает!
Win7
Отсутствует
Просьба адаптировать его, чтобы он работал в среде Aris-t2.
Почему у тебя в sandbox'е не работает я без понятия.
А в окно можно попробовать, например, так
(async (flag, url) => { if (location != url) return; await delayedStartupPromise; if (Downloads[flag]) return; Downloads[flag] = true; var bwt = BrowserWindowTracker; var show = function(download) { download.newDownloadNotified || bwt.getTopWindow(this)?.DownloadsPanel.showPanel(); }; ["PUBLIC", "PRIVATE"].forEach(async (type, ind) => { var view = Object.create(null); view.private = Boolean(ind); view.onDownloadChanged = show; (await Downloads.getList(Downloads[type])).addView(view); }); })("806555", "chrome://browser/content/browser.xhtml");
Отсутствует
Решил вернуть себе нижнюю панель по типа AddonBar.
Эта панель работает в v117, v118b7, v119a1. На пару строчек ниже есть эта же панель с кнопкой скрыть\показать панель. Здесь https://forum.ru-board.com/topic.cgi?fo … tart=220#4 еще одна работающая нижняя панель с очень маленьким кодом в 20 строк. Там же в шапке описание активации скриптов методом Aris-t2, при внимательном выполнении совершенно не вызывает трудностей, я бы удалил все и выполнил повторно.
Отредактировано fuchsfan (11-09-2023 12:53:53)
Отсутствует
Эта панель работает в v117, v118b7, v119a1. На пару строчек ниже есть эта же панель с кнопкой скрыть\показать панель.
А вы можете показать скриншот этой кнопки или написать где её искать?
я бы удалил все и выполнил повторно.
Дя я уже несколько раз всё перепроверял и переустанавливал. Есть подозрение что где-то конфликт.
Отсутствует
А вы можете показать скриншот этой кнопки или написать где её искать?
Она сразу появилась в правом верхнем углу браузера, или смотрите в настройке панелей инструментов, и вытащить оттуда.
Отсутствует
Она сразу появилась в правом верхнем углу браузера, или смотрите в настройке панелей инструментов, и вытащить оттуда.
Да спасибо, у меня только что заработало с кнопки Restart, а потом начал добавлять остальное. Где я ошибся так и не понял.
Спасибо за помощь.
update И снова всё пропало.
update2 Како-то ломаю синтаксис — userChrome.js
Отредактировано leshiy_odessa (11-09-2023 15:50:02)
Отсутствует
Dumby
Вроде на форуме нет темы по скриптам, подключаемых по методам
метод Aris-t2 метод xiaoxiaoflood метод Endor8
Может нужно создать тему по этим методам.
Поэтому попрошу Вас здесь посмотреть скрипт ucf-mem-indicator.js
Он перестал работать в 115. Применяю метод Endor8 для загрузки скриптов.
(async id => ({ delay: 2e3, val: "", init(topic, mm) { Services.obs.addObserver(mm = this, topic); Services.obs.addObserver(function quit(s, t) { this.timer?.cancel(); Services.obs.removeObserver(mm, topic); Services.obs.removeObserver(quit, t); }, "quit-application-granted"); }, observe(win) { var df = win.MozXULElement.parseXULToFragment( `<hbox id="${id}" tooltiptext="${ "ЛКМ: Минимизировать потребление памяти
ПКМ: about:performance
Ctrl+ПКМ: about:debugging#/runtime/this-firefox" }" onclick="event.button || ${ "memoryMinimizationButton.doMinimize(event)" }"><label id="${id += "-label"}"/></hbox>` ); this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); (this.observe = async win => { this.timer.cancel(); await new Promise(ChromeUtils.idleDispatch); var clone = win.document.importNode(df, true); clone.firstChild.oncontextmenu = this.about; win.document.getElementById("star-button-box").after(clone); this.notify(); })(win); }, about(e) { var gb = e.view.gBrowser; gb.selectedTab = gb.addTrustedTab(`about:${ e.ctrlKey ? "debugging#/runtime/this-firefox" : "performance" }`); }, async notify() { var info = await ChromeUtils.requestProcInfo(); var bytes = info.memory; for(var child of info.children) bytes += child.memory; this.timer.initWithCallback(this, this.delay, this.timer.TYPE_ONE_SHOT); var prev = this.val; if ((this.val = this.mgb(bytes)) != prev) for(var win of CustomizableUI.windows) { var lab = win.document.getElementById(id); if (lab) lab.value = this.val; } }, mgb: bytes => bytes < 1073741824 ? Math.round(bytes / 1048576) + "MB" : (bytes / 1073741824).toFixed(2) + "GB" }).init("browser-delayed-startup-finished"))("ucf-mem-indicator");
Отсутствует
Открыть папку Chrome, Profiles хоткеем
// OpenChromeFolder(Alt+C).uc.js (function(win){ function openChromeDirectory() { // Get the chrome directory. let currUChrm = Services.dirsvc.get("UChrm", Ci.nsIFile); let chromeDir = currUChrm.path; // Show the chrome directory. let nsLocalFile = Components.Constructor("@mozilla.org/file/local;1","nsIFile", "initWithPath"); new nsLocalFile(chromeDir).reveal(); } if (typeof win.openChromeDirectory == 'undefined') { win.openChromeDirectory = openChromeDirectory; win.addEventListener('keydown', function(e) { if (e.altKey == true && e.keyCode == 67) { e.preventDefault(); openChromeDirectory(); } }, false); } })(window);
// OpenProfileFolder(Alt+P).uc.js (function(win){ function openProfileDirectory() { Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile) .launch(); } if(typeof win.openProfileDirectory == 'undefined') { win.openProfileDirectory = openProfileDirectory; win.addEventListener('keydown', function(e) { if (e.altKey == true && e.keyCode == 80) { e.preventDefault(); openProfileDirectory(); } }, false); } })(window);
Отсутствует
Dumby
Вроде на форуме нет темы по скриптам, подключаемых по методам
метод Aris-t2 метод xiaoxiaoflood метод Endor8
Может нужно создать тему по этим методам.
А что по названию темы непонятно... ?!
Win7
Отсутствует
Применяю метод Endor8 для загрузки скриптов.
То есть, насколько могу судить, скрипты грузятся
в top-level окна документов с адресом с протоколом chrome://
и по событию "load".
В первом приближении, перерисовал так
location.href.endsWith("://browser/content/browser.xhtml") && (async id => { var g = Cu.getGlobalForObject(Cu); g[id] || Services.scriptloader.loadSubScript("data:charset=utf-8," + encodeURIComponent(`(${id => this[id] = { delay: 2e3, val: "", init(win) { var df = win.MozXULElement.parseXULToFragment( `<hbox id="${id}" tooltiptext="${ "ЛКМ: Минимизировать потребление памяти
ПКМ: about:performance
Ctrl+ПКМ: about:debugging#/runtime/this-firefox" }" onclick="event.button || ${ "memoryMinimizationButton.doMinimize()" }"><label id="${id += "-label"}"/></hbox>` ); this.cui = win.CustomizableUI; var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); this.next = timer.initWithCallback.bind(null, this, this.delay, timer.TYPE_ONE_SHOT); (this.init = win => { timer.cancel(); var clone = win.document.importNode(df, true); clone.firstChild.oncontextmenu = this.about; win.document.getElementById("star-button-box").after(clone); this.notify(); })(win); }, about(e) { var gb = e.view.gBrowser; gb.selectedTab = gb.addTrustedTab(`about:${ e.ctrlKey ? "debugging#/runtime/this-firefox" : "performance" }`); }, async notify() { var info = await ChromeUtils.requestProcInfo(); var bytes = info.memory; for(var child of info.children) bytes += child.memory; this.next(); var prev = this.val; if ((this.val = this.mgb(bytes)) != prev) for(var win of this.cui.windows) { var lab = win.document.getElementById(id); if (lab) lab.value = this.val; } }, mgb: bytes => bytes < 1073741824 ? Math.round(bytes / 1048576) + "MB" : (bytes / 1073741824).toFixed(2) + "GB" }})("${id}");`), g); g[id].init(window); })("urlbar-memory-indicator");
Отсутствует
Dumby, существует ли возможность на кнопке в onCommand: function(event) {...) прописать команды, чтобы кнопка открывала определенный раздел реестра через запуск regedit? Просто ответьте да или нет.
Отредактировано 6e73epo (30-09-2023 08:31:51)
Отсутствует