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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

Скрипты » userChrome.js » Сегодня 21:24:29

Dumby Большое спасибо за практикум.

в консоли браузера просто не включён многопроцессный режим

Да, так и есть. Ни разу в жизни не включал. Теперь вижу при
extensions.webextensions.remote=true
remoteTypes: ["extension"]


Для стилизации uMatrix у меня один css файл для попапа и настроек. Если получится, то сделаю чтение из css, а если нет, то придется вбивать в mjs 300 строк

Скрипты » userChrome.js » Сегодня 17:24:07

Dumby пишет

Но тогда непонятно в чём затруднение

в том, но я не смог найти в e.target.... uMatrix@raymondhill.net


Так-то, о подобных вещах поперёк мейнстрима,
типа WE в родительском процессе, лучше говорить сразу,
чтобы не приходилось гадать.

Это со стороны выглядит, что я знал, а на самом деле узнал только после тестов перед написанием предыдущего сообщения, т.к. у меня в user.js extensions.webextensions.remote=false еще с FF91


Ещё бы, в регистрации написано: remoteTypes: ["extension"]
а у тебя такого процесса нет.
Можно заменить на matches: ["moz-extension://*"]
тогда будет работать.

Сократим mjs до

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

Выделить код

Код:

export class WebExtensionsStylerChild extends JSWindowActorChild {
	handleEvent(e) {
		var doc = e.target;
		console.log(doc);
	}
}

Если extensions.webextensions.remote=true, то
remoteTypes: ["extension"]       // не пашет
matches: ["moz-extension://*"]  // не пашет


или в консоли уже не увидеть?


Если extensio

Скрипты » userChrome.js » Вчера 18:01:56

Dumby пишет

WebExtensions живут в своём отдельном процессе.
А значит, бесполезно что-то слушать в окне браузера,
которое в родительском процессе, в котором
аддонского добра просто быть не может, никакого.

Ну почему бесполезно слушать? Пока еще не удалили эту настройку, а если она в false, то можно послушать


Поскольку о своём uc-скриптоприёмнике ты не рассказал ничего

Этот. Нет в нем никаких регистраций


Теперь про mjs'ку

В вашем первом коде все понятно, норм зарегилось, а во втором коде ничего не ясно. Это содержимое WebExtensionsStylerChild.mjs? Как этот mjs запускать? Что в нем за export .. extends? Не получилось ничего стилизовать таким способом, хотя бы на примере uMatrix


А раз тебе «С конструктором больше понравилось

Чтение из css файла я только с ним попробовал


Кстат

Скрипты » userChrome.js » 11-10-2024 22:06:53

Dumby, может перед push впаять wrappedJSObject? Не дает мне стилизовать меню и настройки одного из расширений

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

Выделить код

Код:

location == "chrome://browser/content/browser.xhtml" && addEventListener("DOMDocElementInserted", e => {
	let doc = e.target;
	if (!doc.documentURI.startsWith("moz-extension://f6665cb1")) return;
	let win = doc.ownerGlobal;
	
	let file = Services.dirsvc.get("UChrm", Ci.nsIFile);
	file.initWithPath(file.path+"\\css\\test\\yt_dark.css");
	let fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
	let sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
	fis.init(file, -1, 0, 0);
	sis.init(fis, "UTF-8");
	let data = sis.read(sis.available());

	let sheet = new win.CSSStyleSheet();
	sheet.replaceSync(data);
	doc.adoptedStyleSheets.push(sheet);
});


e.target выдает, что readyState находится на этапе loading, а значит title всегда будет пустым. Неужели нет способа как-

Скрипты » userChrome.js » 09-10-2024 20:29:41

Dumby пишет

Вот, развлекайся

ооо, спасибо, красота. Целых 3 способа. С конструктором больше понравилось + есть гордая надпись в правилах: constructed.

Это что ещё за monkey-offtopic?

Не совсем, если userChrome.js скрипт не умеет выборочно стилизовать http(s) страницы

Скрипты » userChrome.js » 08-10-2024 16:38:59

Dumby пишет

здесь нужно железобетонное обоснование

Его нет, но есть интерес альтернативного подхода. Если очень кратко, то какова вероятность того, что при переносе на четвертый уровень, а затем полного удаления документа из web стандарта, это не распространится на юзер стили agent, chrome и content? В поисках альтернативы был успешно опробован метод, а вот что делать с внутренними страницами about:*, chrome:* пока не знаю. Или слишком забегаю вперед?

Скрипты » userChrome.js » 07-10-2024 18:50:22

Dumby пишет

копируем файл в проводнике,
и в буфере торчит больше десятка форматов,
а await navigator.clipboard.read() отдаёт пустой массив

Да, так и есть, для .read() и readFromClipboard() - это неизвестный формат данных. Сможем ли где-то в браузере вставить такое? Вряд ли. Но и веб стандарт по буферу еще не до конца реализован в браузерах

виджет создаётся кодом, исполнившемся в окне,
и многое некоторое привязано к этому окну

Редко когда открываю window1, разве что случайно нажав Ctrl+N, и сразу закрываю. Отношусь к одноокошечникам.

args11, мало того, что это ненужная глобальная переменная

С моими познаниями даже не знаю как, например, в onCommand() получить значение переменной, созданной через let (var) в onCreated()

Лучше создавать виджет в другом месте, вот, например, через SystemGlobal.eval()

А если работать только в одном окне, то лучше тоже через SystemGlobal.eval()?

Спасибо за виджет и информацию, все ра

Скрипты » userChrome.js » 02-10-2024 13:59:40

Dumby пишет

можно было бы и интервал подрядить на сколько не жалко.

Это интересно только в плане технической реализации

Dumby пишет

Но как узнать что буфер обмена пуст? В смысле, какое состояние буфера считать пустым?

Все упрощается тем, что я никогда не очищаю буфер вне браузера, т.е. это будет делать кнопка. А в плане реализации мне не подходит оконный readFromClipboard(). Это становится понятным, если в буфере несколько типов данных, например, мы сначала скопировали текст, а потом картинку. Подходит await navigator.clipboard.read().
В итоге сделал такую кнопку. Просьба посмотреть и более грамотно расписать с точки зрения гуру, ну и заменить readFromClipboard()
[spoiler][code]location.href.endsWith("://browser/content/browser.xhtml") && (async (alertsService) => CustomizableUI.createWidget({
    id: "my-cleanClipbrd",
    label: "Clean clipbrd",
    tooltiptext: "Clean data from Clipboard",
    localized: false,
    get icon() {
        let icon = "data:image/png;base64,iVBORw0KGgoAAAA

Скрипты » Greasemonkey » 28-09-2024 17:28:39

xrun1 можно вкрутить GM.setClipboard. Вроде в новой версии идет уже из короби, т.е. не нужно прописки через @grant, либо как-то в скрипте задействовать doCommand("cmd_copy")

Скрипты » Greasemonkey » 28-09-2024 14:08:49

xrun1 не тестил, но на http://*/* navigator.clipboard работать не будет

Скрипты » userChrome.js » 28-09-2024 13:10:22

Dumby посмотрите оконную виджет кнопочку-индикатор. Прослушки глобальные, действуют в любом месте окна, т.е. жестко с кнопкой не связаны. Цель: вместо этих прослушек добавить такую, чтобы кнопка делала opacity = 0.5 или disabled = true, если буфер обмена пуст и opacity = 1 или disabled = false? если буфер обмена не пуст.
Или с событием 'copy' такое не прокатит и нужно ждать поддержки такой фишки?
[spoiler][code]location.href.endsWith("://browser/content/browser.xhtml") && (async () => CustomizableUI.createWidget({
    id: "test_button",
    localized: false,
    get icon() {
        let icon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAABY0lEQVR4nGNgwANeL2EofrWUoYiBXPBoHsMfECbbgLszGf6DMNkGXJvM8B+EyTYgODXuPwiTpit0FTNv0ip1noTltsJhU/6DsED0Ylve6MXqIDm8ennjl8fyxi39yh+35D9/7KL/ArEL/gvEzPsvGD33v2DU7P+CkTO/CodPi8VpAH/sglUCMfPhGoQiZ/0XipjxX

Board footer

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