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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№152623-05-2024 19:10:24

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

_zt пишет

рамку окна скрыть

Да вот скриптик для scriptschrome.domload чтобы скрыть совсем, у меня на [windows] 11 даже углы закругленные убрались

скрытый текст

Выделить код

Код:

(async () => {
    if (AppConstants.platform !== "win") return;
    var margin = "0,0,0,0";
    if (TabsInTitlebar.enabled)
        document.documentElement.setAttribute("chromemargin", margin);
    TabsInTitlebar._update = eval(`(${`${TabsInTitlebar._update}`.replace(/^(async\s)?.*?\(/, `$1function ${TabsInTitlebar._update.name}(`)
        .replace(/\.setAttribute\("chromemargin",\s*"0,2,2,2"\)\;/g, `.setAttribute("chromemargin", "${margin}");`)})`);
})();

Отсутствует

 

№152723-05-2024 19:22:42

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 181
UA: Firefox 88.0

Re: UCF - ваши кнопки, скрипты…

Почему при внесении любых изменений в user_chrome.manifest браузер перестает "видеть" UserChromeFiles, как будто его нет вообще? Windows 7, Firefox 88.0.1, UserChromeFiles отсюда.

Отсутствует

 

№152823-05-2024 21:06:53

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1596
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Алексей У.
Вариантов несколько, возможно ваш блокнот кодировку ломает или добавляет расширение сохраняемому файлу, синтаксическая ошибка в тексте или вы добавляет свое до первой строки оригинала.
   
Добавлено 23-05-2024 21:20:29
Vitaliy V.
А хорошо, мне нравится. Спасибо.
Теперь можно свои рамки добавить только там где нужно и только для активного окна.

Отредактировано _zt (23-05-2024 21:20:38)

Отсутствует

 

№152924-05-2024 01:00:46

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 462
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

В параметре module кроме Boolean можно указать массив из строк ["importSymbol"]

Спасибо! MJS работают, но как подключить mjs скрипт, который должен запускать функцию ?

Выделить код

Код:

export {registerUCFTitleChanged, UCFTitleChangedChild}; // Замены в именах вкладок
var reg = /^Скачать |-\sПоиск\sв\sGoogle$| \| Форум Mozilla Россия$/;

function registerUCFTitleChanged() {
	var esModuleURI = Components.stack.filename;
	ChromeUtils.registerWindowActor("UCFTitleChanged", {
		child: {
			esModuleURI,
			events: { DOMTitleChanged: { capture: true }},
		},
		matches: ["https://*"],
		messageManagerGroups: ["browsers"],
	});
}
class UCFTitleChangedChild extends JSWindowActorChild {
	handleEvent(e) {
		if (reg.test(this.document.title))
			this.document.title = this.document.title.replace(reg, "");
	}
}

Отсутствует

 

№153024-05-2024 08:45:22

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2201
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

использовал методы Cu.createObjectIn и Cu.exportFunction,
что там по ним багов не завезли?

Ну, я не прям уж такой мёртвой хваткой вцепившись в багзиллу.
Просто иногда пытаюсь просматривать на предмет отвала.


Так что, более чем запросто, могу что-то пропустить, проворонить.
Поэтому, здесь на меня полагаться не следует.
А скажу так: само существование этих двух методов Cu виднелось,
но каких-то багов о них, лично мне, не попадалось. Вообще.


Кстати, было бы неплохо, если бы был какой-то репортинг
на ошибку исполнения func() добавленных в unloadMap.
А то добавишь кривой деструктор, закроешь окно,
и никакая консоль не подскажет, что деструктор кривой.


А если нет, то можно убрать «e».
То есть, просто catch {} а не catch (e) {}
Вроде, это называется «Optional catch binding».
Такой упрощённый синтаксис завезли с Firefox 58.

Отсутствует

 

№153124-05-2024 16:29:13

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

как подключить mjs скрипт, который должен запускать функцию ?

Ну смотря откуда хочешь запускать, можешь так записать
{ ospath: "%UCFDIR%UCFTitleChangedChild.mjs", module: ["registerUCFTitleChanged"], func: "registerUCFTitleChanged();"},
или из другого background скрипта registerUCFTitleChanged();
или из оконного скрипта UcfPrefs.customSandbox.registerUCFTitleChanged();
или сделай как у Dumby типа ChromeUtils.domProcessChild.childID || ...

Dumby пишет

Кстати, было бы неплохо, если бы был какой-то репортинг
на ошибку исполнения func() добавленных в unloadMap.

Done!

Отсутствует

 

№153224-05-2024 18:25:36

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 181
UA: Firefox 88.0

Re: UCF - ваши кнопки, скрипты…

_zt пишет

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

Если не трудно, можно подробнее по каждому из пунктов.

Отсутствует

 

№153324-05-2024 20:47:36

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1596
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Алексей У.
1. Используйте Notepad++ или другой нормальный блокнот
2. Включите отображение зарегистрированных расширений файлов в Windows
3. Не пишите в манифест ничего, кроме данных вам строк
4. Не пишите ничего до первой оригинальной строки
Все остальное можно найти в гугле.

Отсутствует

 

№153424-05-2024 21:00:43

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 181
UA: Firefox 88.0

Re: UCF - ваши кнопки, скрипты…

_zt пишет

1. Используйте Notepad++ или другой нормальный блокнот
2. Включите отображение зарегистрированных расширений файлов в Windows
3. Не пишите в манифест ничего, кроме данных вам строк
4. Не пишите ничего до первой оригинальной строки

По пунктам 2-4 все в порядке. Что касается пункта 1, то обнаружил, что стандартный Блокнот предлагает при сохранении следующие варианты кодировки: ANSI, UTF-8, Юникод, Юникод Big Endian. Какую из них выбрать?
P.S. Раньше вообще не обращал внимания на такие тонкости.

Отсутствует

 

№153524-05-2024 21:12:40

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1596
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Алексей У.
Со "стандартный Блокнот" вы так для каждого файла спрашивать будете. Возьмите нормальный блокнот.
UTF-8 там.

Отсутствует

 

№153625-05-2024 08:56:40

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 462
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Доработал ucf_hookClicks.js и исправил неоткрытие менюшек в многооконом режиме.
Сделал две настраиваемых команды в Меню пользователя, которое открывается правым кликом на unified-extensions и add-ons-button.
Ещё при наведении на них мыши показывается содержимое буфера обмена.
Можно задать имена строк меню и js-код, сохраняемые при рестарте [firefox].
По правому клику на 2-х последних строках открывается опция about:config с вашими командами или строкой по-умолчанию.
Дополнил подсказки – на кнопках, строках меню и в статусе достаточно подробные подсказки.

Отсутствует

 

№153725-05-2024 09:59:48

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2201
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

Done!

Похоже, здесь не всё так просто.
Добавил в custom_script_win.js строку
ucf_custom_script_win.setUnloadMap("bbbla", () => bbbla());


Рестарт, Ctrl+N, Alt+F4 — и получаю в консоли две записи
«can't access property "destructor", this.ucfo[key] is undefined»
и «bbbla is not defined».


Немного странно что две, но вполне приемлимо.
Больше репортинга — скорее понуждает к исправлению кривого деструктора.
Иначе говоря — две записи лучше, чем ноль.


Но, рассмотрим такой код:

скрытый текст

Выделить код

Код:

((key, ucf) => {
	ucf[key] = {
		destructor() {
			bbbla();
		}
	};
	ucf.unloadlisteners.push(key);

})("bbbla", ucf_custom_script_win);


Те же действия, но получаю уже две одинаковые записи
«bbbla is not defined».


То есть, тут получается, что кривой деструктор вызывается дважды.
А это уже нехорошо.


egorsemenov06 пишет

Dumby посиотрите пожалуйста кнопку Check for Addons Updates на работает но при прверке обновлений в консоли пишет
TypeError: Property 'handleEvent' is not callable. browser-custom-element.js:1033:13

Попробовал посмотреть на 128. Жму ПКМ — в консоли куча всяких
«addons.update-checker    WARN    HTTP Request failed for an unknown reason»
но, в моём случае, это совершенно нормально и ожидаемо.
А вот такой странной ошибки как у тебя — увидеть не смог.
Скажу так: если для воспроизводства нужен выход в сеть,
то тогда, увы, здесь я ничем помочь не смогу.

Отсутствует

 

№153825-05-2024 13:24:02

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

получается, что кривой деструктор вызывается дважды.
А это уже нехорошо.

А чего такого нехорошего, ну вызвало два раза на что это повлияет, на скорость закрытия окна, вряд ли.
Кстати а зачем нужны кривые деструкторы, и потом вот эту часть в user_chrome.js
try { this.ucfo[key].destructor(); } catch (e) {Cu.reportError(e);}
можно было вообще не добавлять, но например https://forum.mozilla-russia.org/viewto … 44#p806144
destructor не существует когда добавляется unloadlisteners.push

egorsemenov06 пишет

TypeError: Property 'handleEvent' is not callable

А это похоже моя ошибка, но кроме мусора ни на что не влияет, можно добавить пока не обновил UCF
в user_chrome/StylesScriptsChild.mjs
export class UcfCustomStylesScriptsChild extends JSWindowActorChild {
    actorCreated() {
        this.handleEvent = () => {}
        ...

Отредактировано Vitaliy V. (25-05-2024 13:39:13)

Отсутствует

 

№153925-05-2024 14:34:34

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 462
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

TypeError: Property 'handleEvent' is not callable
А это похоже моя ошибка, но кроме мусора ни на что не влияет, можно добавить пока не обновил UCF

Ещё SaveHTML.mjs при сохранении страницы about:newtab эту же ошибку выводит в консоль.

Отсутствует

 

№154025-05-2024 14:53:46

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2201
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

А чего такого нехорошего, ну вызвало два раза на что это повлияет

Ну, например, код, который идёт до строки с ошибкой,
делает нечто такое, чего не должен делать второй раз.
Хотя да, это я себя уже слишком накручиваю.

Кстати а зачем нужны кривые деструкторы

Как зачем? В тестовых целях, посмотреть что случится.

destructor не существует когда добавляется unloadlisteners.push

Может проверять как-то так, даже не знаю

скрытый текст

Выделить код

Код:

/*
                try { val.func.apply(val.context); } catch (e) {
                    try { this.ucfo[key].destructor(); } catch (e) {Cu.reportError(e);}
                    Cu.reportError(e);
                }
*/
                if (val.func)
                    try {val.func.apply(val.context);} catch(ex) {Cu.reportError(ex);}
                else if (this.ucfo[key]?.destructor)
                    try {this.ucfo[key].destructor();} catch(ex) {Cu.reportError(ex);}
                else
                    Cu.reportError("Missing destructor for key " + key);

Отсутствует

 

№154125-05-2024 16:18:01

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

Ещё SaveHTML.mjs при сохранении страницы about:newtab эту же ошибку выводит в консоль

Да, если включены стили, скрипты для контента, как убрать ошибку в посте выше.

Dumby пишет

Может проверять как-то так

Или так, сообщение об ошибке, побуждает её исправить, ну и заменить на setUnloadMap

скрытый текст

Выделить код

Код:

try { val.func.apply(val.context); } catch (e) {
                    if (!val.func)
                        try { this.ucfo[key].destructor(); } catch (e) {Cu.reportError(e);}
                    Cu.reportError(e);
                }


кстати не вижу толку от getUnloadMap наверное заменю или добавлю deleteUnloadMap в следующем обновлении
UPD: обновил на getDelUnloadMap(key, del)
del удаляет если true

Отредактировано Vitaliy V. (26-05-2024 00:56:37)

Отсутствует

 

№154225-05-2024 18:15:31

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 181
UA: Firefox 88.0

Re: UCF - ваши кнопки, скрипты…

Подскажите, пожалуйста, нет ли скрипта (или любого другого способа) вернуть системный вид скроллбаров на ВСЕХ сайтах?

скрытый текст
__________.jpg
Настройки layout.css.scrollbar-color.enabled - false и layout.css.scrollbar-width.enabled - false работают не везде. Например на mozilla.org и youtube.com они не действуют, а собственные скроллбары этих сайтов совершенно не вписываются в цельный интерфейс браузера.
скрытый текст
____________2_.jpg____________3_.jpg

Отсутствует

 

№154325-05-2024 20:08:43

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1193
UA: Firefox 126.0

Re: UCF - ваши кнопки, скрипты…

Алексей У.
https://github.com/Aris-t2/CustomJSforFx/blob/master/scripts/old/custom_scrollbars_fx112.uc.js

Отсутствует

 

№154425-05-2024 21:15:03

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 181
UA: Firefox 88.0

Re: UCF - ваши кнопки, скрипты…

xrun1 пишет

https://github.com/Aris-t2/CustomJSforFx/blob/master/scripts/old/custom_scrollbars_fx112.uc.js

Это нужно в custom_script_win.js добавить?

Отсутствует

 

№154526-05-2024 06:09:31

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 462
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Добавляю текст буфера обмена к подсказке url в строке адреса, но получается изменить только tooltip рамки. Там «aHTMLTooltip» и на http без шифрования подсказки адреса нет.
Помогите сделать правильно! (включая подсказку для http://…… сайтов)

скрипт для окна, событие mouseenter на urlbar-input-box

Выделить код

Код:

(async id => { // добавить текст буфера обмена к подсказке url в строке адреса

var listener = { // изменить aHTMLTooltip
	handleEvent(e){
		let trg = e.target, clip = readFromClip();
// let box = document.getElementById("urlbar-input-container").childNodes[6]; //"urlbar-input-box"
		trg.tooltipText = gBrowser.currentURI.spec + "\n\nбуфер обмена (текст)\n" + crop(clip, 88 ,'…\n', 1);
		console.log(trg.tooltipText);
	},
}
var events = ["mouseenter"],
els = document.getElementById("urlbar-input");
els.addEventListener(events,listener,true);

ucf_custom_script_win.unloadlisteners.push(id);
ucf_custom_script_win[id] = {
	destructor(){
		el.removeEventListener(events,listener,true);
	}
}
var addDestructor = nextDestructor => {
	var {destructor} = ucf_custom_script_win[id];
	ucf_custom_script_win[id].destructor =()=> {
		try {destructor();} catch(ex){Cu.reportError(ex)}
		nextDestructor();
	}
}
var readFromClip = ({clipboard} = Services, data = {}) => {
	try {let trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable),
		flavor = `text/${parseInt(Services.appinfo.platformVersion) >= 111 ? "plain" : "unicode"}`;
		trans.init(docShell.QueryInterface(Ci.nsILoadContext));
		trans.addDataFlavor(flavor);
		clipboard.getData(trans, clipboard.kGlobalClipboard);
		trans.getTransferData(flavor, data);
		if (data.value)
			return data.value.QueryInterface(Ci.nsISupportsString).data;
	} catch {return ""}
},
crop = (z = "",cut = 30,ch = '…\n',g = 0) => { //обрезать/разбить текст
	z = z.match(new RegExp('.{1,'+ cut +'}','g')); cut = z.slice(-1);
	return g ? z.join(ch) : z[0] == cut ? z[0] : z[0] + ch +'…'+ cut;
}
})("ucf_clipboard_in_url");

Отредактировано Dobrov (26-05-2024 06:18:30)

Отсутствует

 

№154626-05-2024 09:14:50

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1193
UA: Firefox 126.0

Re: UCF - ваши кнопки, скрипты…

Алексей У. пишет

Это нужно в custom_script_win.js добавить?

Да, попробуйте.

Отредактировано xrun1 (26-05-2024 09:15:27)

Отсутствует

 

№154726-05-2024 11:23:22

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2201
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

Помогите сделать правильно!

Вот уж нет!
Но, сама суть в том, что #urlbar-input — это HTML элемент,
поэтому, здесь нужен не tooltipText, а title


Кстати, к вопросу о кривых деструкторах.
Тут в деструкторе используется некий «el»,
который в коде нигде не определён.

Отсутствует

 

№154826-05-2024 12:50:31

Алексей У.
Участник
 
Группа: Members
Зарегистрирован: 10-04-2021
Сообщений: 181
UA: Firefox 88.0

Re: UCF - ваши кнопки, скрипты…

xrun1 пишет

Да, попробуйте.

Добавил - ничего не изменилось.:(

Отсутствует

 

№154926-05-2024 15:39:25

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 462
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Вот уж нет!

Но ведь удобно, когда подсказка в строке адреса покажет ещё фрагмент буфера обмена.
Так проще проверять, какой буфер будем отправлять, например в yt-dlp… Не нужен hotkey Win+V, про него не все знают.

Отсутствует

 

№155026-05-2024 16:49:26

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1193
UA: Firefox 126.0

Re: UCF - ваши кнопки, скрипты…

Алексей У.
У меня в 88-й был UCF с изменениями, уже не вспомню где, что и как менял. Выложите свою папку user_chrome_files, посмотрю и прицеплю скрипт.

Отсутствует

 

Board footer

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