Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

Скрипты » UCF-скрипты на этом форуме » 30-11-2021 07:08:17

Dumby - спасибо! Скрипт hookClicks пригодится многим, он позволит прописывать обработку кликов в одном скрипте и позволит «разгрузить» другие кнопки, не добавлять в них код обработки кликов.
Сделал финальный демо-скрипт, расширяющий возможности нескольких кнопок. Dumby, проверь, может я где-то накосячил или что-то можно сделать проще! :)
[spoiler=hookClicks дополнительные клики и подсказки кнопок][code](async (id, func) => { // для custom_script_win.js: дополнительные клики и подсказки кнопок © Dumby, mod Dobrov
    var dsym = Symbol(), j = (...args) => args.join("\n"),
    br_val = () => { return ` ${Services.prefs.getIntPref("ucf.tabbrowser-tabpanels.opacity",100)}%`;}, br_txt =

        `Клик ролика    сброс яркости\nКрутить ±    Яркость страниц`, tooltips = {
    get "PanelUI-menu-button"() {    /* delete this["PanelUI-menu-button"]; */ return j(
        `Клик мыши:    меню Firefox ${Services.appinfo.platformVersion}`,
        `… держать    ⚑ Краткая справка`,
        `…+ Alt        Персонализация`,
        `Клик дважды

Сustom Buttons » Custom Buttons » 30-11-2021 06:08:43

Просьба починить или дать другой код получения выделенного на странице текста.
Если подвесить код на кнопку, то выделенный текст отобразится в консоли только при втором клике кнопки :(

Выделить код

Код:

var GetSelection = (mM = gBrowser.selectedBrowser.messageManager) => {
	mM.addMessageListener('getSelect', function sel_listener(msg) {
		window.seltxt = msg.data;
		mM.removeMessageListener('getSelect', sel_listener, true);
	});
	mM.loadFrameScript('data:,sendAsyncMessage("getSelect",content.document.getSelection().toString())',false);
};
GetSelection();
console.log(window.seltxt +' '+ Math.random());

Скрипты » UCF-скрипты на этом форуме » 23-11-2021 02:02:40

Dumby спасибо за отличный код дополнительных кликов. :)
Подключил оба кода в custom_script_win.js, попробую вернуть функции Save HTML и прочие…


Только не понял, как в код обновления tooltips добавить removeEventListener и нужен ли он.

Выделить код

Код:

(() => { // update Tooltips
	………
	addDestructor(() => {
		………
	});
})();

Ещё не обновляются подсказки для 1) tracking-protection-icon-container "На этой странице не обнаружено ни одного известного Firefox трекера" и 2) identity-icon-box "Подтверждено: Let's Encrypt".
Я подключил на них яркость страниц, код работает. А как к этим кнопкам с динамической подсказкой добавить свой текст?
`Колесико ±    Яркость страниц\n…+ клик     Полная яркость
Яркость страниц ${win.Services.prefs.getIntPref("ucf.tabbrowser-tabpanels.opacity", 100)}%`
?

Сustom Buttons » Custom Buttons » 21-11-2021 06:13:27

Dumby пишет

Так если mouseenter устраивает, то что ты мне голову морочишь.

И не думал! Цель - улучшить демо-профиль, где многие скрипты уже включены. mouseenter не устраивает цитата в теме UCF: у меня перестал обрабатываться долгий клик в скрипте ToggleAboutConfig, когда добавил addEventListener("mouseenter" для nav-bar-customization-target в скрипт ucf_hookClicks. Ещё back/forward-button при "mouseenter" открывают меню, а не переходят вперёд/назад.
Я просил код, который может добавлять дополнительные клики на уже существующие кнопки тулбара, что позволит проще расширять их возможности, используя один скрипт.


Пробовал изменить твой код перехвата кликов, но не разобрался! Нужно, чтобы работало примерно так:
Изменение яркости скролом над "identity-box" вместо ★, перехват событий указанных id кнопок в начале кода, р

Скрипты » UCF-скрипты на этом форуме » 18-11-2021 18:33:26

Dumby - ты делал перехват кликов для кнопок в панели адреса в скрипте ucf_hookClicks.js.
Получилась обработка кликов двумя дублирующими способами: первый до ucf.unloadlisteners, затем для кнопок на панели адреса.
Второй способ перехватывает клики всех кнопок page-action-buttons, а при обработке проверяется id кнопки.


Возможно ли доработать код, чтобы сразу перехватывать клики кнопок "nav-bar-customization-target" основной панели и "page-action-buttons" панели адреса ?
Выгода этого способа в том, что проще в одном скрипте прописать дополнительные клики нужных кнопок, а не делать кучу скриптов, где каждая кнопка обрабатывается персонально. Также прошу по возможности добавить действие на долгое нажатие кнопки, так как у меня перестал обрабатываться долгий клик в скрипте ToggleAboutConfig, когда я добавил addEventListener("mouseenter" для nav-bar-customization-target в скрипт ucf_hookClicks.

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 18-11-2021 14:16:58

_zt пишет

Короче, вот пример:

Всё скопировал в custom_styles_all_user.css, но не получилось:
f16cce76e9e9.png

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 18-11-2021 10:39:20

_zt - в твоём стиле нет кастомного tooltip.
Нужна подсказка с поясняющим текстом для папки Закладок с пустым именем. Чтобы при наведении на закладку "" появлялся tooltip с конкретным текстом, прописанным в CSS.

Сustom Buttons » Custom Buttons » 18-11-2021 01:02:23

Dumby пишет

Совсем разные вещи. У RV pageAction, а у VDH browserAction.

Такой способ обновления подсказок сложен, нужно подстраиваться под каждую кнопку! Я ожидал простой код обновления подсказок любых кнопок панели.
Сделал mouseenter для панелей page-action-buttons и nav-bar-customization-target. Подсказка обновляется при наведении:

Выделить код

Код:

var rv_btn = document.getElementById(`pageAction-urlbar-_2495d258-41e7-4cd5-bc7d-ac15981f064e_`);
	if ((e.target == rv_btn) && (!/Режим/.test(rv_btn.tooltipText)))  // Reader View
		rv_btn.tooltipText = rv_help;

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 18-11-2021 00:17:37

Приветствую! Подскажите, как сделать подсказку (tooltip) для папки на панели закладок?
Иконку и курсор мыши поменял, но вот всплывающую подсказку не получается добавить, такого атрибута нет.
В aris-t2/customcssforfx подсказки в addonlists_show_addon_version_number.xml добавляются через код, но я там не разобрался…

Выделить код

Код:

/* Значок указанной папки Избранного - Пустое имя, жёлтый цвет папки, курсор в виде руки */
.bookmark-item[label=""] > .toolbarbutton-icon {
    filter: invert(15%) sepia(300%) saturate(500%) !important; height: 20px !important;
}
.bookmark-item[label=""]:hover { cursor: pointer;}

Скрипты » UCF-скрипты на этом форуме » 16-11-2021 16:02:55

Dumby - вопрос по коду обновления ToolTip кнопки расширения.
Почему-то подсказка для Video DownloadHelper не обновляется! И как переделать код для замены Tooltip на нескольких кнопках расширений?
[code]var view_id = "2495d258-41e7-4cd5-bc7d-ac15981f064e"; // Reader View
var vdh_id = "b9db16a4-6edc-47ec-a1f4-b86292ed211d"; // Video DownloadHelper
var manager = ChromeUtils.import("resource://gre/modules/ExtensionParent.jsm").ExtensionParent.apiManager,
wait = (e, isAppShutdown) => isAppShutdown || manager.on("ready", onReady),
onReady = (e, addon) => {
    // if (addon.id != `{${view_id}}`) return;
    if (addon.id == `{${view_id}}`) {
        manager.off("ready", onReady), addon.once("shutdown", wait);
        manager.global.PageActions.actionForID(`_${view_id}_`).setTooltip(`Reader View    ${Services.appinfo.OS == "Darwin" ? "⌥⌘M" : "Ctrl+⇧+M"}\n\nКлик мыши    Режим для чтения\nКолёсико    Адаптивный дизайн`); // изменить подсказку
    }
    if (addon.id == `{${vdh_id}}`) {
        manager.off("ready", onReady

Скрипты » UCF-скрипты на этом форуме » 15-11-2021 00:13:02

Dumby - Спасибо! обновление подсказки кнопки также работает из custom_script_win.js.


Dumby - проверь мой новый загрузчик: (сократил, чтобы не повторять строки с loadscript)
Переделал через список массива  js-jsm скриптов. Путь к скриптам используется ещё для подключения [CB]-кодов, поэтому константа.

Выделить код

Код:

const scripts = 'chrome://user_chrome_files/content/custom_scripts/'; (async () => { // ваши скрипты
	[['ucf_QuickToggle.js'], ['UCFTitleChangedChild.jsm', 'registerUCFTitleChanged'], ['Test.jsm']]
	.forEach(function(name) { try { if (/\.jsm$/i.test(name[0])) { // [скрипт js или jsm, инициализация]
				var obj = ChromeUtils.import(scripts + name[0]);
				name[1] && obj[name[1]]();
			} else Services.scriptloader.loadSubScript(scripts + name[0]);
		} catch(ex) {Cu.reportError(ex);}
	});
})();

Скрипты » UCF-скрипты на этом форуме » 14-11-2021 02:19:52

Dumby - Спасибо! Ещё проблема: при возвращении из режима "Адаптивный дизайн" в обычный просмотр многие страницы остаются обрезанными, нужно F5 жать.
Как при возвращении в обычный просмотр ещё и обновить страницу? (но не обновлять её для Адаптивного дизайна)


Dumby - а как обновить подсказку для "Reader View" в панели адреса?
У меня только грубый вариант: зарегистрировать mouseenter и постоянно делать: ReaderView.tooltipText = подсказка……

Выделить код

Код:

var box = document.getElementById("page-action-buttons"); // кнопки панели адреса
var boxLst = e => {
	if (e.button == 1 && e.target.id == "pageAction-urlbar-_2495d258-41e7-4cd5-bc7d-ac15981f064e_") // Reader View
		e.stopImmediatePropagation(),	document.getElementById("key_responsiveDesignMode").doCommand(); // Адаптивный дизайн
}
box.addEventListener("auxclick", boxLst, true);
addDestructor(() => box.removeEventListener("auxclick", boxLst, true));

Dumby - Вопрос: в custom_script.js функция loadscript не грузи

Скрипты » UCF-скрипты на этом форуме » 13-11-2021 13:46:13

xrun1 - не то. Цитата - Выполняем внешний скрипт. И никаких подгружаемых функций.

Скрипты » UCF-скрипты на этом форуме » 13-11-2021 06:39:10

Dumby - ещё просьба вдобавок к первой:
подскажи код, чтобы выполнять скрипт из файла. То есть, кликом на кнопке выполняем внешний …/user_chrome_files/custom_scripts/user.js, в который должны быть переданы все текущие переменные, функции и т.п. той кнопки, из которой вызван внешний JS.


Может, это пригодиться для отладки скриптов без перезапуска браузера. А может есть более простой способ отладки части кода кнопки?
Наверное, код внешнего JS не должен попадать в startupCache, это верно?

Скрипты » UCF-скрипты на этом форуме » 13-11-2021 02:00:44

unter_officer пишет

Возможно ли сделать отдельную кнопочку для Вкл/Выкл "Адаптивного дизайна"?

[spoiler=пример уже есть в этом топике][code](async (bar, exp, tid, self) => CustomizableUI.createWidget(self = { id: "test-button", localized: false, label:
"Test Button", tooltiptext:
`ЛКМ:    Design View
CKM: folder UCF`,

    onCreated(btn) {
        btn.onclick = this.click;
        btn.toggleAttribute("context");
        btn.setAttribute("image", "chrome://browser/skin/preferences/application.png");
    },
    exec(num, win) {
        tid = null;
        self[num](win);
    },
    context(win) {
        var btn = win.document.getElementById(this.id);
        btn.removeAttribute("context");
        btn.dispatchEvent(new win.MouseEvent("contextmenu", this.a));
        btn.toggleAttribute("context");
    },
    a: {__proto__: null, bubbles: true, screenX: 0, screenY: 0},

    click(e) {
        if (e.detail > 2) return;
        var n2 = e.button != 2;
        var dbl = e.detail == 2;
        var num = 16 * e.button + 8 * e.ctrlKey + 4 * e.shiftKey + 2 * e.altKey + dbl;
        if (!self[n

Скрипты » UCF-скрипты на этом форуме » 12-11-2021 17:26:33

Dumby - спасибо, исправил и доработал код.


Вопрос - как сделать перехват кликов на кнопках расширений, которые динамически появляются?
То есть, при старте браузера кнопки Reader View в строке адреса нет, она появляется, когда открывается сайт.
Будет удобнее, если у кнопки режима чтения появится ещё действие - например альтернативный режим просмотра.
То есть, нужно на кнопке Reader View по клику колёсиком включать/выключать режим "Адаптивный дизайн".
[code]win.document.getElementById("pageAction-panel-_2495d258-41e7-4cd5-bc7d-ac15981f064e_").click()
trg.ownerDocument.getElementById("key_responsiveDesignMode").doCommand(); // Адаптивный дизайн
id="pageAction-panel-_2495d258-41e7-4cd5-bc7d-ac15981f064e_" Reader View в меню Действия на странице
id="pageAction-urlbar-_2495d258-41e7-4cd5-bc7d-ac15981f064e_" в строке

Скрипты » UCF-скрипты на этом форуме » 11-11-2021 18:05:36

Dumby - Помоги исправить код перехода в "Адаптивный дизайн".


код в сложной кнопке QuickToggle.js работает, но если несколько раз включить/выключить Адаптивный дизайн через кнопку, то это переключение перестаёт работать.
и не работает в простой кнопке, в которую ты мне клики добавил:

Выделить код

Код:

responsiveUI(trg) {
			var obj = ChromeUtils.import("resource://devtools/shared/Loader.jsm").require("devtools/client/menus").menuitems.find(menuitem => menuitem.id == "menu_responsiveUI");
			(this.responsiveUI = target => obj.oncommand({target}))(trg);
		},

[spoiler=строка 155 - ucf_hookClicks.js][code](async (id, func) => { // дополнительные клики на downloads-button, PanelUI-menu для custom_script_win.js
    await window.delayedStartupPromise;
    var btn = document.getElementById("downloads-button"), pui = document.getElementById("PanelUI-menu-button");
    if (!btn) return; btn.tooltipText = GetDynamicShortcutTooltipText(btn.id) +`

Двойной клик:  открыть [Загрузки]
…на картинке: ⧉ най

Сustom Buttons » Custom Buttons » 10-11-2021 02:08:20

Dumby подскажи, как из js-кода перейти в режим «Адаптивный дизайн» ?
В меню нашёл только идентификатор горячей клавиши key_responsive_DesignMode


xrun1 в твоём скрипте тоже недостаток - не показывает цифры без такого дополнения:

Выделить код

Код:

// Bug 1665318 - In about:processes refresh, ResidentUniqueDistinguishedAmount is slow (Firefox 94+)
		// https://bugzilla.mozilla.org/show_bug.cgi?id=1665318
		parseInt(Services.appinfo.platformVersion) < 94 && Object.assign(this, eval(
			`({${this.notify}})`.replace("memory", "residentSetSize").replace("memory", "residentUniqueSize")
		));

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 08-11-2021 03:19:40

Vitaliy V. просьба дополнить работу кнопки "Восстановить фавиконки закладок" из расширения Add Toolbars Buttons.


При нажатии кнопка "Восстановить фавиконки закладок" краснеет, но как оценить, сколько времени ещё ждать или сколько иконок обновлено?
Может возможно добавить проценты прогресса обновления favicon или убывающее число оставшихся необновлённых иконок, отображаемых либо на кнопке либо в консоли либо в строке состояния?

Сustom Buttons » Custom Buttons » 07-11-2021 07:28:15

Есть ли способ открывать определённый ключ about:config ? Например: about:config#network.proxy.autoconfig_url ? Если нет, то
как из JS-кода отправить в строку ввода "Искать параметр по имени" название нужного параметра ?

Выделить код

Код:

Services.wm.getMostRecentWindow("navigator:browser").switchToTabHavingURI("about:config", true, {relatedToCurrent: true, triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()});

Скрипты » UCF-скрипты на этом форуме » 07-11-2021 05:32:38

Dumby - спасибо, я немного переделал код и обновил профиль-сборку скриптов.

Dumby пишет

А ещё у меня там не работают альт-клики. Насколько я понял, mousedown занят системой

Не системой, а демоном горячих клавиш, которые можно изменить в Настройках из меню.
перетаскивание/Resize окна вместе с Alt - это стандарт, но мета-клавишу можно в настройках поменять на Ctrl или Alt или Win…

Скрипты » UCF-скрипты на этом форуме » 06-11-2021 01:35:56

Dumby - Спасибо, скрипт очень компактный и крутой, но в двойной клик на UCF-кнопке правый клик мыши работает неверно.
Вместе с правым кликом в MacOS и вероятно Linux открывается контекстное меню панели, пробовал отключить и не получилось:

Выделить код

Код:

var reset = e => e.target.linkedObject = this;
		var id, lo = {click: e => n2 || reset(e)};
		var lin = /macos|linux/.test(e.view.AppConstants.platform);
		var stop = e => reset(e) && e.preventDefault();
		lo.contextmenu = lin
			? e => e.ctrlKey || e.shiftKey ? 0 : stop(e) : stop;
		n2 || reset(e) && e.preventDefault();
……

Dumby - ещё просьба по твоему скрипту перехвата кликов на кнопках > добавить Двойной клик  (у меня не удалось):
Конкретно - добавить двойной клик на "PanelUI-menu-button" (строка 133) и по возможности на "downloads-button"…


Второе (если это возможно) > изменить способ перехвата кнопок со стандартного [b]

Сustom Buttons » Custom Buttons » 30-10-2021 02:27:48

Dumby - спасибо за подсказки! В моём FF-профиле 90% твоих скриптов! :)
Чуть поменял код - помоги объединить скрипт яркости со скриптом дополнительных кликов Звёздочки? :beer:

[spoiler=надо в этот UCF-скрипт добавить возможность регулировать яркость вращением колёсика над Звёздочкой:][code](async (id, sel) => { // Клики на Звёздочке, ToolTip: расположение закладки в Избранном, Недавняя папка
    var g = Cu.getGlobalForObject(Cu), stt = g[id]; // https://forum.mozilla-russia.org/viewtopic.php?pid=790890#p790890
    if (!stt) { var {obs, prefs} = Services, {bookmarks: bm, observers: pobs} = PlacesUtils;
        stt = g[id] = { bm, help_star: `

Правый клик:    ⤾ Вернуть вкладку
…+ Alt     Перевод выдел.текст | Сайт
…+ Shift    Яндекс-поиск выделенного\n
Колесико ±    Яркость страницы
…+ клик     Полная яркость`,

            pref: `ucf.${id}Guid`,
            events: ["bookmark-added"],
            async init() {
                this.handleEvent = e => this[e.type](e);

                if ((this.pbm = typeof PlacesBookmarkMoved == "function"))
                   

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 17-10-2021 10:21:48

перестал работать CSS, переключающий стиль на любой странице на более подходящий для чтения - на зелёный фон и чёрный текст.
На форуме есть только старый CSS-код, но в новых Firefox в результате остаётся только зелёный фон, а должен меняться и фон и текст.
[code]/*AGENT_SHEET*/

@-moz-document url-prefix("http"), url-prefix("https"), url-prefix("ftp"), url-prefix("file") {
html *, html {
background: #ccd1d1 !important; text-shadow: none !important;
color: #000000 !important;
-moz-border-top-colors: #8FBC8F !important; -moz-border-bottom-colors: #8FBC8F!important; -moz-border-left-colors: #8FBC8F !important; -moz-border-right-colors: #8FBC8F !important;
}
code, pre, input, samp, kbd, var, dfn,.postright {
-moz-appearance: none !important;
background-color: #BADBAD !important;
}
input, select, textarea, button {
-moz-appearance: none !important;
border: 1px solid #BADBAD !important;
background-color: #BADBAD !important;
}
.codebox, BLOCKQUOTE, TEXTAREA, .spoiler { -moz-border-top-

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]