если скрыть панель крестиком на самой панели - то доставать её обратно не понятно как... кроме как сделать новый профиль
Кроме кнопки есть настраиваемые Сочетания клавиш, по умолчанию это Ctrl + Alt + B
в этой панели открывать сайта - чтобы в 1м окне сразу 2 сайта смотреть?
Подключал панель Sidebar tabs от Vitaliy V., но открыть в ней сайт не получилось.
Тестируйте, подключать в scriptschrome.domload , кнопка уже встроена в данный скрипт
https://github.com/VitaliyVstyle/Vitali … ar_tabs.js
Отредактировано Vitaliy V. (13-06-2024 13:36:10)
Отсутствует
Vitaliy V. превосходно! Хорошая замена для Open in Sidebar и Tile Tabs !
если Sidebar закрыт, контекст-меню «Открыть ссылку» даёт ошибку: sender.tab is undefined
Просьба «прижать» имена вкладок влево, они скачут по сторонам на разной ширине Sidebar при смене вкладок. (у меня не получилось)
Вопрос: как из другого кода открыть сайт в твоей Sidebar ?
надо по RMouse на identity-icon-box открыть адрес в Sidebar, т.к. в ucf_hookClicks проще назначать клики.
Отредактировано Dobrov (08-06-2024 04:37:58)
Отсутствует
Просьба «прижать» имена вкладок влево, они скачут по сторонам на разной ширине Sidebar при смене вкладок
У меня не было такого на , не знаю может на и так, обновил проверь помогло или нет.
Вопрос: как из другого кода открыть сайт в твоей Sidebar ?
Нужно знать индекс вкладки в которой открывать, например так
ucf_custom_script_win.ucf_sidebar_tabs.setPanel(4, "https://forum.mozilla-russia.org");
или индекс можно поискать в menus если есть один или более пункта меню
ucf_custom_script_win.ucf_sidebar_tabs.menus[0].aIndex
Отсутствует
setUnloadMap(ID, () => this.destructor());
Разве метод setUnloadMap() не разработан, чтобы писать так:
setUnloadMap(ID, this.destructor, this); а не создавать ненужную функцию.
Тестируйте
Что-то у меня наблюдается какой-то слегка неожиданный outline
на Sidebar Tabs'ских табах в tab > hbox.tab-middle
Воспроизводится при запуске браузера с ранее открытым Sidebar Tabs.
Щёлкаешь по другому табу, и такая вот картина:
data:image/png;base64,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
Просто, в таком случае, ссылка должна бы открыться в том же контейнере,
но этого не будет.
А такое, возможно, представляет некую чувствительность для тех,
кто пользуется контейнерной фичей.
Или, наоборот — чётко заявить в описании:
«Ссылка из контейнера откроется вне контейнера, вас предупредили.»
И ничего тогда не делать.
Отсутствует
Vitaliy V.
Спасибо за новый Sidebar Tabs! Вот во что это вылилось, а вы когда то делать его не хотели.
Очень навязчивый пункт контекстного меню, сделайте его пожалуйста только для контекста страницы и контекста ссылок.
Добавлено 08-06-2024 22:02:49
Dumby
#st_toolbox tab[selected="true"] { --default-focusring: 0px solid !important; border-bottom-color: color-mix(in srgb, currentColor 80%, transparent) !important; }
Отредактировано _zt (08-06-2024 22:03:05)
Отсутствует
Vitaliy V.
Сделайте пожалуйста новый код для открытия вкладки загрузок по ПКМ на стандартной кнопке загрузок. Вот старый код
Отсутствует
У меня не было такого на , не знаю может на и так, обновил проверь помогло или нет.
1) как вызвать ucf_custom_script_win.ucf_sidebar_tabs… из scriptsbackground: ? (из твоего скрипта ЮзерМеню)
2) лучше прижать id="sbar_tabs" влево, иначе на разной ширине SideBar при выборе вкладок "sbar_tabs" прыгает влево/вправо и смещаются заголовки.
Отредактировано Dobrov (09-06-2024 05:57:18)
Отсутствует
egorsemenov06
пока так пробуйте
// })(ChromeUtils.import("resource:///modules/DownloadsViewUI.jsm"));
})(ChromeUtils.importESModule("resource:///modules/DownloadsViewUI.sys.mjs"));
Разве метод setUnloadMap() не разработан, чтобы писать так:
setUnloadMap(ID, this.destructor, this); а не создавать ненужную функцию.
Да но работает и так без контекста, а так да фунций внутри фунций лучше меньше
Просто, в таком случае, ссылка должна бы открыться в том же контейнере,
но этого не будет.
Хорошо что напомнил про контейнеры, вроде как сделал чтобы открывалось в том же контейнере, посмотри можно ли сделать без browser.remove();
Сделайте пожалуйста новый код для открытия вкладки загрузок по ПКМ на стандартной кнопке загрузок.
// var st = window.ucf_custom_script_win?.sidebar_tabs || window.ucf_custom_script_all_win?.sidebar_tabs;
var st = window.ucf_custom_script_win?.ucf_sidebar_tabs;
как вызвать ucf_custom_script_win.ucf_sidebar_tabs… из scriptsbackground:
Ну как, добавляешь вначале объект window текущего окна
он может быть получен из event клика по кнопке или пункту меню
var win = e.view;
win.ucf_custom_script_win.ucf_sidebar_tabs…
лучше прижать id="sbar_tabs" влево, иначе на разной ширине SideBar при выборе вкладок "sbar_tabs" прыгает влево/вправо и смещаются заголовки.
Так они и прижаты влево что в что в
добавил такой код для левого spacer, пробуй
#st_toolbox tabs > spacer:first-of-type {
display: none !important;
}
Отсутствует
посмотри можно ли сделать без browser.remove();
В смысле без использования именно этого метода?
Тогда да, browser.replaceWith() прямо напрашивается.
А если в смысле вообще без удаления, то тогда, наверно, нет.
Вот, попробовал так
/* browser.destroy(); let container = this[`st_container_${aIndex}`] ||= browser.parentElement; browser.remove(); browser = this[`st_browser_${aIndex}`] = (this[`cn_browser_${aIndex}`] ||= this.fragment.querySelector(`#st_browser_${aIndex}`)).cloneNode(false); if ("userContextId" in options) browser.setAttribute("usercontextid", options.userContextId); container.append(browser); */ // Just test var d = browser.destroy; if (d.name != "brd") browser.destroy = function brd() { d.call(browser); console.log("BROWSER DESTROY!"); } var id = options.userContextId; id ? browser.setAttribute("usercontextid", id) : browser.removeAttribute("usercontextid"); browser.replaceWith(browser);
Первый раз — при манипуляции с атрибутом "usercontextid".
Второй раз — при пере-подвешивании браузера на DOM-дерево.
Проверяю, запуская с консоли
st_browser_4.browsingContext.originAttributes.userContextId
Вроде, показывает то, что должно быть.
А без пере-подвешивания браузера на DOM-дерево, атрибут-то есть,
но с проверочной строки консоль далеко не всегда показывает то, что надо.
Отсутствует
Vitaliy V. - спасибо! Все заработало в scriptsbackground: и заголовки вкладок не смещаются.
Помогите сделать глобальную функцию для кода в receiveMessage()
Опять у меня та же проблема, не работает через globalThis[Symbol.for(……) для ucb_SaveHTML.mjs)
/* SingleHtml вызов: Cu.getGlobalForObject(Cu)[Symbol.for("UcfGlob")].SingleHTML(1) */ var self, name = "SingleHTML", EXPORTED_SYMBOLS = [`${name}Child`], {io, focus, obs, prefs, dirsvc} = Services; export class SingleHTMLChild extends JSWindowActorChild { //класс = name + Child receiveMessage() {return htmlAndName(this.contentWindow);} } ChromeUtils.domProcessChild.childID || ({ init(topic) { ………… globalThis[Symbol.for('UcfGlob')] = this.UcfGlob; //общие функции }, ………… UcfGlob: { ………… } }).init("browser-delayed-startup-finished"); var htmlAndName = async mainWin => { здесь нужен вызов функции из UcfGlob ………… }
Отсутствует
А если в смысле вообще без удаления, то тогда, наверно, нет.
Да это и имел ввиду про replaceWith что то и забыл, спасибо заменил.
Тестовый кусок внутри этого кода показывает,
что browser.destroy() вызывается дважды.
Да проверил ещё browser.construct() он не вызывается значит и destroy() не нужно принудительно вызывать,
сделал теперь destroy() один раз вызывается.
Добавлено 10-06-2024 12:10:14
Dobrov
Зымысел то какой, чтобы получить contentWindow ? Думаю это плохая идея...
Очень навязчивый пункт контекстного меню, сделайте его пожалуйста только для контекста страницы и контекста ссылок.
Не совсем так, но теперь должно быть менее навязчивым.
Отредактировано Vitaliy V. (10-06-2024 13:03:54)
Отсутствует
Зымысел то какой, чтобы получить contentWindow ? Думаю это плохая идея...
Я уже решил задачу другим способом. Хотел получить URL вкладки, учитывая ReaderMode и расширения.
Общие функции из ucb_SaveHTML.mjs вызываю из двух скриптов - так проще и экономия кода.
ещё в Sidebar Tabs не обозначено действие по клику колёсиком. Может так добавить:
mitem.setAttribute("label", label); вставить после этой строки:
mitem.tooltipText = "Колёсико откроет ссылку из буфера обмена";
Отредактировано Dobrov (10-06-2024 17:03:31)
Отсутствует
Не совсем так, но теперь должно быть менее навязчивым.
Уже лучше, но... щелкаешь по изображению >> "Открыть в SidebarTabs", ожидается открытие изображения, а открывается страница.
И слово "ссылку" у вас лишнее, ведь пункт и страницу открывает.
Мне кажется тут надо либо изображения к открытию добавить, либо использовать контексты, как вы это делали для старой версии скрипта OpenWith... и почему то не сделали в новой.
Как заставить расширения работать в сайдбаре, например Dark Reader?
Отсутствует
Получить текущий URL
Что такое текущий URL, фрейма? На текущей странице может быть много фреймов,
если нужно получить URL документа верхнего уровня зачем искать его в JSWindowActorChild,
так что я пас не ясна задача.
щелкаешь по изображению >> "Открыть в SidebarTabs", ожидается открытие изображения, а открывается страница
О нет, если так сделать то например на этой же странице не найти свободного места, везде изображения открываются.
И слово "ссылку" у вас лишнее
Да это же настройки юзера запишите как надо. Там можно вообще удалять или добавлять нужные вкладки если не поняли.
Как заставить расширения работать в сайдбаре, например Dark Reader?
В оригинальном сайдбаре не работает почему в моем должно, это ж api расширений нужно подключать, а вкладки где взять их нет для сайдбара
Отредактировано Vitaliy V. (10-06-2024 18:32:07)
Отсутствует
О нет
А было бы прикольно, картинки там открывать.
Ну так просто исключения сделайте, я не знаю как. Вот код из старого OpenWith
... funcpopupshowing = () => { var link = gContextMenu.onLink || gContextMenu.onMailtoLink; for(let arr of this._eventlisteners) { if (arr[2].name === "page") // Исходно //arr[0].hidden = link; // др. селекторы - gContextMenu(.onImage, .onCanvas, .onVideo, .onAudio) arr[0].hidden = link || gContextMenu.onTextInput || gContextMenu.isContentSelected; else if (arr[2].name === "link") arr[0].hidden = !link || gContextMenu.onTextInput; } }; funcpopuphiding = () => { for(let arr of this._eventlisteners) { if (arr[1] === "command") arr[0].hidden = true; } };
Отредактировано _zt (10-06-2024 20:15:00)
Отсутствует
openAddonsMgr is not a function
Попробуй так
/* var openAddonsMgr = window.BrowserOpenAddonsMgr // Firefox */ var openAddonsMgr = window.BrowserOpenAddonsMgr || window.BrowserAddonUI.openAddonsMgr // Firefox
Отсутствует
Vitaliy V.
Если в настройках панели закладок стоит "Отображать только на новой вкладке" на новой вкладке панель перекрывает заголовок Sidebar Tabs. На страшно, закрыть можно горячими клавишами, но всё же.
https://imgur.com/vnNUw3N
Отсутствует
Если в настройках панели закладок стоит "Отображать только на новой вкладке" на новой вкладке панель перекрывает заголовок Sidebar Tabs.
Получается наложение имён вкладок Sidebar Tabs (загловок у меня отключен). При этом ещё и закрыть новую вкладку мышью не получается.
Отсутствует
Как отследить, что сайт не переключился в ReaderMode и выполнить при этой ошибке свой код ?
вики выдаёт ошибку: lazy.ReaderMode.parseDocument(...) is nullAboutReaderChild.sys.mjs
document.getElementById("key_toggleReaderMode", window).doCommand();
Надо учесть, что эта команда повторным вызовом закрывает режим чтения.Переделал демо-профиль в шапке, другое оформление плюс корпоративные настройки-закладки для новых профилей. Добавил "открыть сайт в Sidebar" в меню пользователя и клик колёсиком на щите (повторный вызов закроет Sidebar) и на жест мыши: тащить ссылку вниз. При сохранении из ReaderMode (правый клик на кнопке Загрузки) в конце страницы правильная ссылка на оригинал.
Отредактировано Dobrov (12-06-2024 08:46:35)
Отсутствует
Dumby здравствуйте.
если руками включить настройку browser.search.newSearchConfig.enabled
Поставил себе на посмотреть 128b1, ну всё таки ESR 128 будет , понял что new search configuration просто так не отключить.
И вдогонку скрипт, разблокирующий все поисковые расширения, остаётся не приделах.
Пришло в голову так написать, и да знаю что я в этих вопросах ламер. Может есть у вас что добавить с вашей точки зрения?
. // Permanently enable the new search configuration until we remove the old code as part of bug 1870686. // lockPref("browser.search.newSearchConfig.enabled": false) no more work try {(async (su) => { let {ChromeUtils} = Cu.getGlobalForObject(Cu), impESM = ChromeUtils.importESModule, {SearchUtils} = impESM(su); SearchUtils.newSearchConfigEnabled = false; })("resource://gre/modules/SearchUtils.sys.mjs");} catch(ex) {Cu.reportError(ex);}
Жизнь иногда такое выкидывает, что хочется подобрать...
Отсутствует
Поставил себе на посмотреть 128b1, ну всё таки ESR 128 будет
Мудро.
Может есть у вас что добавить с вашей точки зрения?
Добавить-то нет, а прокомментировать код могу.
Скармливать асинхронную обёртку блоку try {} бессмысленно,
такая обертка никогда не сможет образовать ошибку прямо сразу.
Ну, кроме синтаксической, но тогда уже ничто не поможет.
И, let-батарея выглядит избыточно.
Вобщем, можно записать как-то так, но это всего лишь прихорошение.
(async su => ChromeUtils.importESModule(su).SearchUtils.newSearchConfigEnabled = false)( "resource://gre/modules/SearchUtils.sys.mjs" );
Отсутствует
Решил Sidebar Tabs в виде юзер скрипта добавить в UCF, обновляем его, раскомментируем https://github.com/VitaliyVstyle/Vitali … ts.mjs#L50
И тестируем новую функцию AUTO_HIDE = true https://github.com/VitaliyVstyle/Vitali … abs.js#L34
Отредактировано Vitaliy V. (13-06-2024 15:45:22)
Отсутствует