Dumby - Я не уверен, но автоскрытие панели вкладок от Виталия есть в профиле profile_ucf_dobrov, но перестало работать в новых FF.
:root:not([inFullscreen])[v_menubar_autohide="true"] #navigator-toolbox > #nav-bar { margin-top: 0 !important; margin-inline-end: var(--v-titlebar-buttonbox-container-width, 108px) !important; }
Отредактировано Dobrov (17-09-2022 11:21:53)
Отсутствует
Отсутствует
есть в профиле profile_ucf_dobrov
Если ты про этот код, то его подкосил баг 1767802.
/* .tabbrowser-tab[first-visible-tab="true"][last-visible-tab="true"] ~ #tabs-newtab-button { */ .tabbrowser-tab[first-visible-tab="true"][last-visible-tab="true"] ~ #tabs-newtab-button, .tabbrowser-tab[first-visible-tab="true"][last-visible-tab="true"] ~ #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button {
Отсутствует
Dumby, подскажите, что можно изменить в скрипте Simple Session Manager, чтобы заработало в FF68 и 78..?
В 68 после замены btn.type = "menu"; на btn.setAttribute("type", "menu"); и правки @-moz-document url-prefix(chrome://browser/content/browser.xul) кнопка появляется, по щелчку ЛКМ предлагает сохранить сессию, но не сохраняет. В 78 кнопка появляется без ковыряния в коде, но тоже не работает.
На форуме
LGS
Скрипты у Dobrov-а работают с перехватом кликов hookClicks, его нужно добавить в CustomStylesScripts.jsm, иначе ни один из этих скриптов работать не будет.
Это для 78. А в 68 новые UCF, к сожалению, не работают.
Отредактировано kazarin (17-09-2022 19:47:26)
Отсутствует
В 68 после замены btn.type = "menu"; на btn.setAttribute("type", "menu"); и правки @-moz-document url-prefix(chrome://browser/content/browser.xul) кнопка появляется, по щелчку ЛКМ предлагает сохранить сессию, но не сохраняет.
Что-то я не понял, там же четыре «?.» оператора, которые надо выгребать,
а об этом ни слова. Ладно, будем считать что сделал, но не написал.
Патч на сохранение. Только это, я не буду там всё тестировать,
а если ещё что-то всплывёт, то пиши доходчивый STR, попробую посмотреть.
/* async save(excWin) { var io = Cu.getGlobalForObject(Cu).IOUtils; */ io: { get OS() { delete this.OS; Cu.import("resource://gre/modules/osfile.jsm", this); return this.OS; }, makeDirectory(path) { return (this.makeDirectory = this.OS.File.makeDir)(path); }, writeJSON(path, obj) { var wa = this.OS.File.writeAtomic; return (this.writeJSON = (path, obj) => wa(path, JSON.stringify(obj)))(path, obj); } }, async save(excWin) { var io = Cu.getGlobalForObject(Cu).IOUtils || this.io;
Отредактировано Dumby (17-09-2022 21:39:51)
Отсутствует
LGS
Оказывается, SSM не работает и в профиле Dobrov-а (тестовый профиль для 78 от 12.04.2022). Есть кнопка, но ничего не сохраняется, а через клик выскакивает сообщение:
Dumby
На 78 фикс не помог, по-прежнему не сохраняет.
Отредактировано kazarin (17-09-2022 21:17:51)
Отсутствует
Dumby
Патч на сохранение
На 78 (esr и Вин10 x64) заработало все: сохранение, восстановление, удаление, переименование и даже иконки у менюшек.
На 68 (форке и ВинХР) заработало сохранение и восстановление. Спасибо!
68esr и Вин10 x64 кнопка не создается, наверное что-то локальное у меня.
Только это, я не буду там всё тестировать,
а если ещё что-то всплывёт, то пиши доходчивый STR, попробую посмотреть.
Конечно, сам погоняю, посмотрю что всплывет. Только мне стыдно спросить - что такое STR..?
Add: Оказывается, работало (попытка 1) до перезагрузки компа. Теперь проверяю "попытку 2".
Отредактировано LGS (17-09-2022 22:06:31)
На форуме
kazarin
этот скрипт, по-видимому, ниже 91 работать и не будет
На 78 попытка 2 тоже работает, как и первая. Только не знаю как будет после перезагрузки компьютера.
На 68esr кнопка не создается, на Еноте68 работает сохранение и восстановление.
На форуме
Dumby
"Вторая попытка" работает и на 78, и на 68! Большое спасибо!))
LGSВ 68 нет иконки на функции удаления, потому что самой такой картинки в браузере нет, вы там пропишите своё что-нибудь))
Нет, есть, но почему-то не отображается.
От перезагрузки компа кнопки не зависят, только от очистки кэша скриптов.
А вот на 68 esr не проверял, счаз гляну.
Да, у меня тоже не появляется в 68. А в Еноте есть))
Отредактировано kazarin (17-09-2022 22:51:57)
Отсутствует
kazarin
От перезагрузки компа кнопки не зависят, только от очистки кэша скриптов
Значит кэш не очистился. После правки "попытки 1" браузер (78) однозначно перезагружался с кнопки очистки кэша и все работало. После перезагрузки компа (нужно было на ВинХР енот проверить) все слетело.
На форуме
На 68esr кнопка не создается, на Еноте68 работает
Конечно не создаётся. Оператор «?.» это не какая-то там ошибка в работе кода,
это сразу SyntaxError, весь код встанет враскоряку.
Уж не знаю что за Енот68, но значит там поддержка этого оператора есть.
Только мне стыдно спросить - что такое STR..?
Steps To Reproduce (шаги по воспроизводству),
типа делай раз, делай два, делай три. Багзильский такой формат.
Пример. Допустим, обсуждаемый код работает.
STR: Запускаем Firefox 78. Инициируем в кнопке сохранение сессии.
В открывшемся окошке ввода имени вызываем контекстное меню (ПКМ) на строке «Сохранить:».
Жмём пункт «Выделить всё».
AR: Выделение не происходит.
ER: Выделение происходит.
Ну, это баг такой в лисе, можно и в простом alert'е увидеть.
Воспроизводится и в 106.0a1
Отсутствует
Dumby
Steps To Reproduce (шаги по воспроизводству)
Благодарю за науку и помощь со скриптами!
Уж не знаю что за Енот68
Это MyPal, человек его на базе 68esr делает для ХР и уже, вроде, кое-что от 78 туда впихнул. Поэтому скрипт и работает.
На форуме
LGS
Ну, то есть, в изначальном вопросе «В 68 после замены» «и правки» это был енот.
У меня нет никакого енота, а сохранение надо было смотреть, поэтому,
на скорую руку, чисто формально, запихал код в Firefox 68 так
.... //if (old != trg) old?.removeAttribute("boot"); if (old != trg) old && old.removeAttribute("boot"); .... //if (arg.constructor.isInstance?.(arg)) { if (arg.constructor.isInstance && arg.constructor.isInstance(arg)) { .... //win.document.querySelector(this.skd)?.removeAttribute("maxwidth"); var menu = win.document.querySelector(this.skd); menu && menu.removeAttribute("maxwidth"); .... //: this.dragData?.mouse && e.preventDefault() : this.dragData && this.dragData.mouse && e.preventDefault()
Отсутствует
Dumby
Проверил, в 68 работает. Спасибо!
LGS
Исправил иконку так
#${pid} [value=removeSession] { list-style-image: url("resource://usercontext-content/cart.svg"); } #${pid} [value=deleteAllSessions] { list-style-image: url("resource://usercontext-content/cart.svg"); }
Отредактировано kazarin (18-09-2022 00:42:03)
Отсутствует
Dumby
Ну, то есть, в изначальном вопросе «В 68 после замены» «и правки» это был енот.
Да, извиняюсь, не совсем точно сформулировал. Думал, что ESR не так важно. А про енота вы и так не знали.
на скорую руку, чисто формально, запихал код в Firefox 68
На 68esr заработало: сохраняет, восстанавливает, переименовывает. Только не удаляет.
Благодарю!
Добавлено 18-09-2022 00:47:20
kazarin
Исправил иконку так
Спасибо, теперь совсем красиво.
Отредактировано LGS (18-09-2022 00:47:20)
На форуме
Dumby - спасибо за адаптацию ucf_SessionManager!
Как сделать прокрутку вкладок колёсиком мыши ? (аналогично Ctrl+Page Up|Down)
твой код работает, только если его запустить из консоли. Разные способы запуска из CustomStylesScripts.jsm не пашут:
(async (tc) => addEventListener("wheel", e => { if (e.shiftKey || e.ctrlKey || e.altKey || e.metaKey) return; e.stopPropagation(); e.preventDefault(); tc.advanceSelectedTab(e.deltaY < 0 ? 1 : -1, true); }, true, tc || 1))(gBrowser.tabContainer);
Скрипты у Dobrov-а работают с перехватом кликов hookClicks, его нужно добавить в CustomStylesScripts.jsm, иначе ни один "из этих" скриптов работать не будет.
LGS спрашивал про ucf_SessionManager.js, которому не нужен ucf_hookClicks. "Из этих" зависят только attrsInspector.js, ucf_mousedrag.js, ucf_QuickToggle.js.
Но глобальный скрипт значительно упрощает код других кнопок и добавляет много функций, подсказки, клики, перехват при наведении мыши на кнопки/панели. Например, расширяет возможности кнопок Загрузки, Печать, PanelUI-menu, Замок и многих других, в том числе можно добавить горячие клавиши и расширить клики/подсказки любых дополнений, как это сделано для Single Save, VideoDownloadHelper, ReaderView.
Отсутствует
Разные способы запуска из CustomStylesScripts.jsm не пашут
Что там может не пахать
(async tc => { var args = ["wheel", e => { if (e.shiftKey || e.ctrlKey || e.altKey || e.metaKey) return; e.stopPropagation(); e.preventDefault(); tc.advanceSelectedTab(e.deltaY < 0 ? 1 : -1, true); }, true]; tc.addEventListener(...args); var id = Symbol(); this.unloadlisteners.push(id); this[id] = {destructor: () => tc.removeEventListener(...args)}; })(gBrowser.tabContainer);
var UcfStylesScripts = { ....... scriptschrome: { // Для докум. окна браузера [ChromeOnly] domload: [ // По событию "DOMContentLoaded" ], load: [ // По событию "load" ....... { path: "advanceSelectedTab.js", ucfobj: true }, ], },
Отсутствует
LGS спрашивал про ucf_SessionManager.js, которому не нужен ucf_hookClicks
Да мы уже разобрались)) Просто моей первой мыслью, раз иконка есть, а скрипт не пашет, было, что взят скрипт, который работает с перехватом.
добавляет много функций, подсказки, клики, перехват при наведении мыши на кнопки/панели
А неужели так много там экономится, чтоб он был так уж нужен?
Мне кажется, таки hookClicks это для мастеров. Которые сами умеют писать скрипты, и им так удобнее. Мне вот как простому юзеру hookClicks потенциально не нравится тем, что если вдруг UCF перестанут работать на FF, то их уже по-другому не подключишь (hookClicks работает только с UCF, я проверял). Скрипты для UCF не всегда дружат с другими загрузчиками, но большая часть - да.
Ну и порой бывает, что сам скрипт может работать на более низкой версии FF со старым UCF, а без hookClicks он не заработает.
Кстати, а вы не можете пояснить, почему на 78 выскакивает вот такое сообщение? В профиле ничего не менял, просто запустил. На самом свежем профиле тоже выскакивает.
Отсутствует
неужели так много там экономится, чтоб "ucf_hookClicks.js" был так уж нужен?
Да, например отдельно в кнопке меню ucf_QuickToggle.js такое очень сложно сделать, а используя hookClicks всё намного проще:
Спасибо Dumby - код обработки предельно прост: 2(trg, forward) { bright(trg, forward);}, // яркость роликом мыши на кнопке ±
1) клики трёх кнопок мыши, б) их долгое нажатие с) прокрутка колёсика мыши д) + комбинации с Ctrl, Alt, Shift, Win
2) различные действия, в зависимости, где событие мыши: на самой кнопке или в её меню опций
3) различные подсказки, обновляемые при наведении курсора мыши на кнопку или разные пункты меню и подменю
4) сообщения в строке статуса при наведении на кнопку или при изменении режимов работы браузера
5) цвет кнопки в зависимости от режима прокси и многое другое (скрипт подробно комментирован)
6) всё работает на любых панелях и кнопках, не нужно в каждую кнопку прописывать клики, подсказки и прочее...
в обычном скрипте для обработки клика левой кнопки мыши нужна не одна строка, а больше. Если добавить правую кнопку и колёсико, код значительно усложняется.
почему на 78 выскакивает вот такое сообщение? В профиле ничего не менял, просто запустил. На самом свежем профиле тоже выскакивает.
проверил, получается, нужен Firefox 84+, на нём всё ОК, на FF78 получил ошибку создания массива:
hmap = new Map([ ["downloads-button", // тексты: кнопка «Загрузки» (в firefox_profile_ucf_dobrov.html указано: рекомендуется Firefox 90+)
Отредактировано Dobrov (19-09-2022 13:47:15)
Отсутствует
Dobrov, спасибо, понятно. Ну в общем это облегчает работу для скриптодела))
рекомендуется Firefox 90+
Да это понятно, интересна была работа на 78.
Отсутствует
Подскажите, кто знает... или как думает, можно ли этот скрипт, или этот, или вот такой скрипт+стиль впихнуть в заголовок фокса..? Ну, т.е. чтобы версия, дата и время отображались в заголовке, а не в панели меню. Или такое технически невозможно..?
Вопрос актуален для всех версий ФФ с 68 по текущую релизную.
На форуме