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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№17619-12-2021 18:25:16

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Это глюк гугла или что-то в скрипте? Автоматический перевод страницы Ru --> En не переводит. En --> Ru работает. №8287.
Перевод выделенного в окне работает правильно.

скрытый текст
kIqRWWe.png
xJ9T6om.png
LUlmMTi.png

Отсутствует

 

№17720-12-2021 13:04:38

Пострел
Участник
 
Группа: Members
Зарегистрирован: 08-04-2021
Сообщений: 51
UA: Firefox 95.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

xrun1, здравствуйте.
   
Нужно эту строчку:

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

Выделить код

Код:

var url = "http://translate.google.com/translate?u="+encodeURIComponent(urlt)+"&hl="+lng+"&langpair="+dir+"&tbb=1";
   
заменить на:
   
var url = "https://translate.google.com/translate?sl=auto&tl=ru&u="+encodeURIComponent(urlt)+"&hl="+lng+"&langpair="+dir+"&tbb=1";

Отсутствует

 

№17820-12-2021 22:03:24

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Пострел, приветствую!
Попробовал, но у меня без изменений. Английский на русский переводит. Русский на английский не переводит: русский определяется автоматически, а второй язык тоже русский.

Отсутствует

 

№17921-12-2021 06:35:20

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Хотел на халяву проскочить. Не получилось, пришлось самому подумать.:D
Пострел, спасибо, что подсказал, в какую сторону копать. Теперь работает, добавил параметр языка '&tl=' + l[1]

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

Выделить код

Код:

var url = "http://translate.google.com/translate?u="+encodeURIComponent(urlt)+"&hl="+lng+"&langpair="+dir+"&tbb=1";
   
заменить на:

var url = "http://translate.google.com/translate?u=" + encodeURIComponent(urlt) + '&tl=' + l[1] + "&hl=" + lng + "&langpair=" + dir + "&tbb=1";

Отсутствует

 

№18021-12-2021 13:21:08

Пострел
Участник
 
Группа: Members
Зарегистрирован: 08-04-2021
Сообщений: 51
UA: Firefox 95.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

xrun1,
   
Да за, что же спасибо. Пурги вам намёл под спойлер, небрежно прочитав ваш пост.
Просто удача, что вы разобрались и нашли хорошее решение.
Вместо помощи, сам воспользовался вашим исправлением. Спасибо.

Отсутствует

 

№18128-12-2021 19:01:48

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 377
UA: Firefox 52.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby
Не подскажите, как в моём примере добавить возможность вставлять "menuseparator" в тех местах, где мне это понадобится?
Что-то не могу сообразить, как это сделать.

Пример

Выделить код

Код:

try { (this.contextmenubookmark = {
	init(that) {
		var contextMenu = this.contextMenu = document.querySelector("#placesContext");
		if (!contextMenu) return;
		contextMenu.addEventListener("popupshowing", this);
		that.unloadlisteners.push("contextmenubookmark");
		var style = "data:text/css;charset=utf-8," + encodeURIComponent(`
			/* Здесь какой-то стиль ..... */
		`);
		try { windowUtils.loadSheetUsingURIString(style, windowUtils.USER_SHEET); } catch (e) {}
	},
	destructor() {
		this.contextMenu.removeEventListener("popupshowing", this);
	},
	handleEvent(e) {
		var array = [
			["ucf_ID_1", "label_1", "func_1", "data:image/png;base64,....."],
			["ucf_ID_2", "label_2", "func_2", "data:image/png;base64,....."],
			// ["separator"],
			["ucf_ID_3", "label_3", "func_3", "data:image/png;base64,....."],
			// ["separator"],
			["ucf_ID_4", "label_4", "func_4", "data:image/png;base64,....."],
			["ucf_ID_5", "label_5", "func_5", "data:image/png;base64,....."],
			["ucf_ID_6", "label_6", "func_6", "data:image/png;base64,....."],
			// ["separator"],
			["ucf_ID_7", "label_7", "func_7", "data:image/png;base64,....."],
			// ["separator"],
			["ucf_ID_8", "label_8", "func_8", "data:image/png;base64,....."],
		];
		array.forEach(m=> {
			// if (m[0] == "separator") { document.createXULElement("menuseparator"); return };
			var menuitem = document.createXULElement("menuitem");
			menuitem.setAttribute("id", m[0]);
			menuitem.setAttribute("label", m[1]);
			menuitem.className = "menuitem-iconic";
			menuitem.setAttribute("image", m[3]);
			menuitem.setAttribute("oncommand", m[2]);
			(this.contextMenu.lastElementChild).after(menuitem);
			this.handleEvent = () => menuitem.hidden;
		});
	},
}).init(this);
} catch(ex) { Cu.reportError(ex); }


«The Truth Is Out There»

Отсутствует

 

№18228-12-2021 19:57:17

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

unter_officer пишет

вставлять "menuseparator"

Чтобы вставлять "menuseparator" его нужно... «вставлять»,
а не просто создать и... всё.

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

Выделить код

Код:

…
			// if (m[0] == "separator") { document.createXULElement("menuseparator"); return };
			if (m[0] == "separator") { e.target.append(document.createXULElement("menuseparator")); return; };

Отредактировано Dumby (28-12-2021 20:00:45)

Отсутствует

 

№18328-12-2021 20:33:44

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 377
UA: Firefox 52.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby пишет

Чтобы вставлять "menuseparator" его нужно... «вставлять»,
а не просто создать и... всё.

Спасибо за помощь.


«The Truth Is Out There»

Отсутствует

 

№18405-01-2022 12:23:45

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby
Помогите пожалуйста по моей коллекционной сборке 69 [firefox]. По мне, так 69 - самая удачная в 60-ой линейке, поэтому решил оставить для коллекции.
Проблема в том, что не получается заставить работать на ней скрипт "Кнопка Дополнения".
Ну в этом наверно нет ничего странного, т.к. скрипт делался уже в бытность 70-ых версий, а в них, кажется с 72, менеджер дополнений был переработан.
Мне пришлось в 69 использовать скрипт extensionOptionsMenu.uc.js от xiaoxiaoflood, он работает как в 69, так и в актуальных версиях, но средствами user_chrome_files запустить его не удалось, поэтому был использован метод загрузки от автора этого скрипта - папка utils и этот код в config.js параллельно с user_chrome_files.
Может можно как-то изменить скрипт авторства Vitaliy V., чтоб он заработал на 69 версии, что предпочтительней, т.к. этот скрипт гораздо лучше, или, в крайнем случае, изменить скрипт от xiaoxiaoflood, чтоб его можно было запустить в user_chrome_files?
Я залил на Яндекс-диск свою настроенную портативку 69, без дополнений, темы, закладок и т.п.
Оба скрипта присутствуют и подключены и были немного изменены: пути до иконки, русификация скрипта xiaoxiaoflood, чекбоксы в скрипте Виталия не цветные, а как были в первом его скрипте, но он точно не будет его подгонять под неактуальную версию, поэтому прошу Вас посмотреть, может можно что-то сделать.
И еще просьба, если не очень сложно, может можно изменить скрипты "Замена фавиконок для сайтов" для работы в 69 [firefox], а то дополнение Favicon Switcher работает хуже чем эти скрипты - заменяет фавикон не сразу, и на Яндексе работает не совсем корректно.

Отсутствует

 

№18505-01-2022 21:02:41

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

sandro79 пишет

не получается заставить работать на ней скрипт "Кнопка Дополнения"
Может можно как-то изменить скрипт авторства Vitaliy V., чтоб он заработал на 69 версии, что предпочтительней

Что-то у меня там нет ChromeUtils в сандбоксе, наверно версия UCF совсем старая.
Ладно, будем исходить из того что нет. Возьмём из глобального объекта JSM'ок.
Вобщем, так, формально, почистил от операторов опцинольной последовательности,
и импорт модулей записал иначе, и, вроде, завелось.
Но там же дофига всего, так что нужно тестировать.

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

Выделить код

Код:

(async id => {
	label = "Дополнения",
	tooltiptext = "ЛКМ: Меню дополнений\nСКМ: Отладка дополнений\nПКМ: Открыть менеджер дополнений",
	img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16' viewBox='0 0 48 48'><g><rect x='0' y='0' width='48' height='48' rx='3' ry='3' style='fill:rgb(0, 120, 173);'/><path style='opacity:0.25;fill:black;' d='M 24,4.5 18,12 3,23.7 12,32.7 3.9,44.1 7.8,48 H 45 C 46.7,48 48,46.7 48,45 V 26.1 L 34.8,12.9 31.8,12.3 Z'/><path style='fill:white;' d='M 19.88,3 C 16.93,3 14.55,4.662 14.55,6.701 14.63,7.474 15.11,8.438 15.37,8.762 16.59,10.41 16.59,11.44 16.29,12.06 H 6.299 C 4.476,12.06 3,13.53 3,15.35 V 23.68 C 3.625,24 4.65,24 6.299,22.77 6.625,22.52 7.587,22.02 8.363,21.94 10.4,21.94 12.06,24.35 12.06,27.29 12.06,30.24 10.4,32.65 8.363,32.65 7.725,32.63 6.774,32.07 6.299,31.82 4.65,30.59 3.625,30.59 3,30.91 V 41.71 C 3,43.53 4.476,45 6.299,45 H 19.58 C 19.88,44.38 19.88,43.35 18.65,41.71 18.4,41.38 17.91,40.42 17.82,39.65 17.82,37.6 20.23,35.94 23.18,35.94 26.14,35.94 28.55,37.6 28.55,39.65 28.53,40.28 27.97,41.23 27.71,41.71 26.47,43.35 26.47,44.38 26.79,45 H 32.65 C 34.47,45 35.96,43.53 35.96,41.71 V 32.55 C 36.56,32.23 37.59,32.23 39.23,33.47 39.72,33.73 40.68,34.29 41.29,34.29 43.35,34.29 45,31.91 45,28.94 45,25.99 43.35,23.59 41.29,23.59 40.54,23.67 39.58,24.17 39.23,24.41 37.59,25.65 36.56,25.65 35.96,25.33 V 15.35 C 35.96,13.53 34.47,12.06 32.65,12.06 H 23.49 C 23.19,11.44 23.19,10.41 24.41,8.762 24.66,8.287 25.22,7.337 25.23,6.713 25.23,4.662 22.85,3 19.88,3' /></g></svg>",
	checked = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16'><path d='M 3,7 7,11 13,5' style='fill:none;stroke:white;stroke-width:1;'/></svg>",
	show_version = true,
	show_description = true,
	user_permissions = true,
	show_hidden = true,
	show_disabled = true,
	enabled_first = true,
	exceptions_listset = new Set([

	]),
	exceptions_type_listset = new Set([

	]);

	var imp = Cu.getGlobalForObject(Cu).ChromeUtils.import;
	var {AddonManager} = imp("resource://gre/modules/AddonManager.jsm");
	var {GlobalManager} = imp("resource://gre/modules/ExtensionParent.jsm").ExtensionParent;

	var extensionOptionsMenu = {
		get alertsService() {
			delete this.alertsService;
			return this.alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
		},
		get clipboardHelp() {
			delete this.clipboardHelp;
			return this.clipboardHelp = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
		},
		get exceptions_type_listarr() {
			delete this.exceptions_type_listarr;
			var arr = ["extension", "theme", "locale", "dictionary"];
			if (!exceptions_type_listset.size)
				return this.exceptions_type_listarr = arr;
			return this.exceptions_type_listarr = arr.filter(type => !exceptions_type_listset.has(type));
		},
		async populateMenu(e) {
			var popup = e.target, doc = e.view.document;
			var addons = await AddonManager.getAddonsByTypes(this.exceptions_type_listarr);
			var addonsMap = new WeakMap(),
			setAttributesMenu = (mi, addon, extension) => {
				var permissions, uuid,
				props = {
					label: `${addon.name}${show_version ? ` ${addon.version}` : ""}`,
					class: "menuitem-iconic",

					tooltiptext: `${
						show_description && addon.description ? addon.description + "\n" : ""
					}ID: ${
						addon.id
					}${
						addon.isActive && (uuid = extension && extension.uuid) ? `\nUUID: ${uuid}` : ""
					}${
						user_permissions && (
							permissions = addon.userPermissions && addon.userPermissions.permissions || ""
						).length ? `\nРазрешения: ${permissions.join(", ")}` : ""
					}\n${
						addon.optionsURL ? "\nЛКМ: Настройки" : ""
					}\nCtrl+ЛКМ: Копировать ID${
						uuid ? "\nShift+ЛКМ: Копировать UUID" : ""
					}${
						addon.creator && addon.creator.url ? "\nCtrl+Shift+ЛКМ: Автор" : ""
					}${
						addon.homepageURL ? "\nСКМ: Домашняя страница" : ""
					}${
						!addon.isBuiltin ? "\nCtrl+СКМ: Просмотр источника" : ""
					}\nShift+СКМ: Просмотр источника во вкладке\nПКМ: Включить/Отключить${
						!addon.isSystem && !addon.isBuiltin ? "\nCtrl+ПКМ: Удалить" : ""
					}`
				};
				for (let p in props)
					mi.setAttribute(p, props[p]);
				if (addon.iconURL)
					mi.setAttribute("image", addon.iconURL);
				var cls = mi.classList;
				addon.isActive ? cls.remove("ucf-disabled") : cls.add("ucf-disabled");
				addon.optionsURL ? cls.remove("ucf-notoptions") : cls.add("ucf-notoptions");
				addon.isSystem ? cls.add("ucf-system") : cls.remove("ucf-system");
				cls.add(`ucf-type-${addon.type}`);
			};
			addons.filter(a => !(a.iconURL || "").startsWith("resource://search-extensions/")).sort((a, b) => {
				var ka = `${(enabled_first ? a.isActive ? "0" : "1" : "")}${a.type || ""}${a.name.toLowerCase()}`;
				var kb = `${(enabled_first ? b.isActive ? "0" : "1" : "")}${b.type || ""}${b.name.toLowerCase()}`;
				return (ka < kb) ? -1 : 1;
			}).forEach(addon => {
				if (!exceptions_listset.has(addon.id) &&
					(!addon.hidden || show_hidden) &&
					(!addon.userDisabled || show_disabled)) {
					let extension = GlobalManager.extensionMap.get(addon.id),
					mi = doc.createXULElement("menuitem");
					setAttributesMenu(mi, addon, extension);
					mi._Addon = addon;
					mi._Extension = extension;
					popup.append(mi);
					addonsMap.set(addon, mi);
				}
			});
			var click = e => {
				e.preventDefault();
				e.stopPropagation();
				this.handleClick(e);
			};
			popup.addEventListener("click", click);
			var listener = {
				onEnabled: addon => {
					var mi = addonsMap.get(addon);
					if (mi)
						setAttributesMenu(mi, addon, mi._Extension);
				},
				onDisabled: addon => {
					listener.onEnabled(addon);
				},
				onInstalled: addon => {
					var extension = GlobalManager.extensionMap.get(addon.id),
					mi = doc.createXULElement("menuitem");
					setAttributesMenu(mi, addon, extension);
					mi._Addon = addon;
					mi._Extension = extension;
					popup.prepend(mi);
					addonsMap.set(addon, mi);
				},
				onUninstalled: addon => {
					var mi = addonsMap.get(addon);
					if (mi) {
						mi.remove();
						addonsMap.delete(addon);
					}
				},
			};
			AddonManager.addAddonListener(listener);
			popup.addEventListener("popuphiding", () => {
				AddonManager.removeAddonListener(listener);
				popup.removeEventListener("click", click);
				addonsMap = null;
				for (let item of popup.querySelectorAll("menuitem"))
					item.remove();
			}, { once: true });
		},
		handleClick(e) {
			var win = e.view, mi = e.target;
			if (!("_Addon" in mi) || !("_Extension" in mi))
				return;
			var addon = mi._Addon, extension = mi._Extension;
			switch (e.button) {
				case 0:
					if (e.ctrlKey && e.shiftKey) {
						if (addon.creator && addon.creator.url)
							win.gBrowser.selectedTab = this.addTab(win, addon.creator.url);
					} else if (e.ctrlKey) {
						this.clipboardHelp.copyString(addon.id);
						win.setTimeout(() => {
							this.alertsService.showAlertNotification(`${img}`, "ID в буфере обмена!", addon.id, false);
						}, 100);
					} else if (e.shiftKey) {
						if (extension && extension.uuid) {
							this.clipboardHelp.copyString(extension.uuid);
							win.setTimeout(() => {
								this.alertsService.showAlertNotification(`${img}`, "UUID в буфере обмена!", extension.uuid, false);
							}, 100);
						}
					} else if (addon.isActive && addon.optionsURL)
						this.openAddonOptions(addon, win);
					win.closeMenus(mi);
					break;
				case 1:
					if (e.ctrlKey) {
						if (!addon.isBuiltin)
							this.browseDir(addon);
					} else if (e.shiftKey)
						this.browseDir(addon, win);
					else if (addon.homepageURL)
						win.gBrowser.selectedTab = this.addTab(win, addon.homepageURL);
					win.closeMenus(mi);
					break;
				case 2:
					if (!e.ctrlKey) {
						let endis = addon.userDisabled ? "enable" : "disable";
						if (addon.id == "screenshots@mozilla.org")
							Services.prefs.setBoolPref("extensions.screenshots.disabled", !addon.userDisabled);
						else if (addon.id == "webcompat-reporter@mozilla.org")
							Services.prefs.setBoolPref("extensions.webcompat-reporter.enabled", addon.userDisabled);
						addon[endis]({ allowSystemAddons: true });
					} else if (!addon.isSystem && !addon.isBuiltin) {
						win.closeMenus(mi);
						if (Services.prompt.confirm(win, null, `Удалить ${addon.name}?`))
							addon.uninstall();
					}
				break;
			}
		},
		openAddonOptions(addon, win) {
			switch (addon.optionsType) {
				case 5:
					win.BrowserOpenAddonsMgr(`addons://detail/${encodeURIComponent(addon.id)}/preferences`);
					break;
				case 3:
					win.switchToTabHavingURI(addon.optionsURL, true);
					break;
			}
		},
		browseDir(addon, win) {
			try {
				if (!win) {
					let file = Services.io.getProtocolHandler("file")
					.QueryInterface(Ci.nsIFileProtocolHandler)
					.getFileFromURLSpec(addon.getResourceURI().QueryInterface(Ci.nsIJARURI).JARFile.spec);
					if (file.exists())
						file.launch();
				} else
					win.gBrowser.selectedTab = this.addTab(win, addon.getResourceURI().spec);
			} catch (e) {}
		},
		addTab(win, url, params = {}) {
			params.triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
			params.relatedToCurrent = true;
			return win.gBrowser.addTab(url, params);
		},
	};
	CustomizableUI.createWidget({
		type: "custom",
		id, label, tooltiptext,
		localized: false,
		defaultArea: CustomizableUI.AREA_NAVBAR,
		onBuild(doc) {
			var btn = doc.createXULElement("toolbarbutton"), win = doc.defaultView,
			props = {
				context: "",
				type: "menu",
				id, label, tooltiptext,
				class: "toolbarbutton-1 chromeclass-toolbar-additional",
			};
			for (let p in props)
				btn.setAttribute(p, props[p]);
			btn.addEventListener("click", e => {
				if (e.button == 1)
					e.view.switchToTabHavingURI("about:debugging#/runtime/this-firefox", true, { ignoreFragment: "whenComparing", triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(), });
				else if (e.button == 2)
					e.view.BrowserOpenAddonsMgr("addons://list/extension");
			});
			var mp = doc.createXULElement("menupopup");
			mp.id = `${id}-popup`;
			mp.addEventListener("contextmenu", e => {
				e.preventDefault();
				e.stopPropagation();
			});
			mp.addEventListener("popupshowing", e => {
				extensionOptionsMenu.populateMenu(e);
			});
			btn.append(mp);
			var btnstyle = "data:text/css;charset=utf-8," + encodeURIComponent(`
				#${id}, #${id}-popup menuitem {
					list-style-image: url("${img}") !important;
				}
				#${id}-popup menuitem::after {
					display: -moz-box !important;
					content: "" !important;
					height: 16px !important;
					width: 16px !important;
					padding: 0 !important;
					border: 1px solid rgb(0, 116, 232) !important;
					border-radius: 0 !important;
					background-repeat: no-repeat !important;
					background-position: center !important;
					background-size: 16px !important;
					background-color: rgb(0, 116, 232) !important;
					background-image: url("${checked}") !important;
					opacity: 1 !important;
				}
				#${id}-popup menuitem.ucf-disabled::after {
					border-color: currentColor !important;
					background-color: transparent !important;
					background-image: none !important;
					opacity: .6 !important;
				}
				#${id}-popup menuitem.ucf-disabled > label,
				#${id}-popup menuitem.ucf-notoptions > label {
					opacity: .6 !important;
				}
				#${id}-popup menuitem.ucf-system > label {
					text-decoration: underline !important;
					text-decoration-style: dotted !important;
				}
				#${id}-popup menuitem > label {
					margin-inline-end: 0 !important;
				}
				#${id}-popup menuitem > .menu-accel-container {
					display: -moz-box !important;
					padding: 4px !important;
					margin: 0 !important;
					opacity: 1 !important;
				}
				#${id}-popup menuitem > .menu-accel-container .menu-iconic-accel {
					display: -moz-box !important;
					margin: 0 !important;
					height: 8px !important;
					width: 8px !important;
					border-radius: 4px !important;
					background-color: transparent !important;
					opacity: 1 !important;
					font-size: 0 !important;
				}
				#${id}-popup menuitem.ucf-type-dictionary > .menu-accel-container .menu-iconic-accel {
					background-color: rgb(227, 27, 93) !important;
				}
				#${id}-popup menuitem.ucf-type-locale > .menu-accel-container .menu-iconic-accel {
					background-color: rgb(48, 172, 55) !important;
				}
				#${id}-popup menuitem.ucf-type-theme > .menu-accel-container .menu-iconic-accel {
					background-color: rgb(219, 106, 0) !important;
				}
			`);
			try {
				win.windowUtils.loadSheetUsingURIString(btnstyle, win.windowUtils.USER_SHEET);
			} catch (e) {}
			return btn;
		},
	});
})("ucf-aom-button");

Я залил

яд.иск :usch:. Это ты залил для всех, кроме меня.

может можно изменить скрипты "Замена фавиконок для сайтов" для работы в 69

Похоже, в 69 у JSWindowActorChild нет callback'а actorCreated().
И about:config там ещё древесный, и :is(), понятное дело, отсутствует.


Ладно, попробуем. Итак, в первом скрипте меняем первую строку на
Cu.getGlobalForObject(Cu).ChromeUtils.registerWindowActor("LinkWinActor", {


Остальные двое:

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

Выделить код

Код:

const ICONS = { // "домен, или адрес для about|chrome|resource": "иконка",

	"yandex.ru": "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16'><g><rect rx='2' ry='2' width='16' height='16' style='fill:rgb(231, 43, 90);'/><path d='M 8.56,2 C 6.31,2 4.49,3.5 4.49,5.99 4.49,7.49 5.31,8.48 6.97,9.57 L 4,13.5 V 14 H 5.76 L 8.53,9.57 H 9.47 V 14 H 11 V 2 Z M 9.47,8.48 H 8.67 C 7.36,8.48 6.05,7.98 6.05,5.99 6.05,4 7.26,3 8.47,3 H 9.47 Z' style='fill:white;'/></g></svg>",
	"nnmclub.to": "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16'><g><path d='M 0.887,0 C 0.54,0.14 0.289,0.279 0.135,0.711 0.051,0.851 0.015,0.991 0,1.27 -0.009,1.71 0.061,2.16 0.325,3.05 0.564,3.88 0.612,4.12 0.612,4.37 0.612,4.48 0.612,4.56 0.588,4.67 0.457,5.43 0.457,6.07 0.588,6.56 0.672,6.87 0.779,7.09 0.947,7.28 1.21,7.57 1.49,7.73 2.05,7.87 L 2.27,7.91 2.11,7.96 C 1.87,8.01 1.71,8.08 1.55,8.19 1.33,8.31 1.22,8.41 1.09,8.59 0.947,8.65 0.887,8.83 0.839,8.99 0.803,9.17 0.792,9.41 0.827,9.65 0.851,9.93 0.851,9.93 0.827,10 0.827,10.1 0.767,10.3 0.708,10.5 0.588,10.9 0.564,11.1 0.564,11.2 0.564,11.5 0.612,11.6 0.875,11.8 1.15,12.2 1.18,12.3 1.15,12.6 1.1,13.2 1.18,13.6 1.39,13.7 1.49,13.7 1.6,13.9 1.75,14 1.93,14 2.05,14.1 2.28,14.4 2.48,14.5 2.55,14.5 2.64,14.5 2.73,14.7 2.73,14.7 2.87,14.7 3.04,14.7 3.04,14.7 3.47,14.5 4.03,14 4.19,13.9 4.44,13.9 4.55,13.7 4.6,13.7 4.68,13.7 4.88,13.6 5.11,13 5.35,11.9 5.39,11.8 5.43,11.6 5.47,11.5 5.65,10.9 5.89,10.4 6.12,10 6.24,9.83 6.48,9.59 6.49,9.59 6.49,9.59 6.49,9.75 6.48,10.1 6.44,10.3 6.43,10.5 6.28,11.1 6.12,11.5 6.08,11.7 6.05,12 6.03,12.4 6.11,12.6 6.21,12.9 6.32,13 6.43,13 6.57,13 6.71,12.9 6.81,12.6 6.91,12.4 7.07,12 7.11,11.7 7.11,11 7.11,10.7 7.13,10.4 7.27,10 7.35,9.75 7.32,9.75 7.37,9.83 7.52,10.1 7.64,10.7 7.69,11.3 7.72,11.6 7.72,12.2 7.69,12.4 7.64,13 7.61,13.6 7.68,14 7.72,14.4 7.76,14.5 8.01,14.5 8.15,14.7 8.31,14.8 8.67,15.5 8.92,15.9 9.03,15.9 9.11,16 9.17,16 9.17,16 9.33,16 9.52,16 9.52,16 9.77,15.9 10.1,15.7 10.1,15.7 10.4,15.7 10.7,15.7 10.7,15.7 10.7,15.7 11,15.6 11.1,15.5 11.4,14.9 11.4,14.9 11.4,14.8 11.5,14.7 11.5,14.5 11.6,14.4 11.7,14.1 12.2,13.9 12.2,13.9 12.2,13.7 12.4,13.6 12.4,13.6 12.4,13 12.4,12.6 12.5,12.4 12.5,12.3 12.5,12.3 12.5,12.2 12.7,12 12.8,11.7 12.8,11.6 12.8,11.5 12.8,11.2 12.8,11.1 12.8,11.1 12.7,10.7 12.4,10.3 12,9.93 11.9,9.83 11.9,9.83 11.9,9.83 12.2,9.93 12.7,9.93 12.9,9.93 13.7,9.75 14,9.08 14.1,7.84 14.1,7.76 14.3,7.59 14.3,7.49 14.3,7.27 14.3,7.19 14.5,7.01 14.5,6.83 14.8,6.6 15.1,6.19 15.7,5.24 15.9,4.85 16,4.41 16,4.31 16,4.25 16,4.03 16,3.84 16,3.76 16,3.69 15.7,3.03 15.2,2.68 14.3,2.75 13.7,2.76 13,2.97 12.2,3.32 12,3.4 11.6,3.63 11.4,3.81 10.2,4.49 9.11,5.55 8.08,6.85 7.95,7 7.85,7.11 7.85,7.11 7.85,7.11 7.84,7.05 7.84,7.04 7.76,6.93 7.72,6.87 7.61,6.81 L 7.53,6.73 7.64,6.47 C 7.92,5.92 8.13,5.51 8.31,5.23 8.35,5.12 8.51,4.91 8.76,4.63 9.43,3.73 9.68,3.47 9.77,3.35 10,3.21 10,3.2 10,3.15 10.1,3.05 10,2.92 10,2.87 9.95,2.87 9.95,2.91 9.84,2.97 9.84,3.11 9.52,3.44 9.11,4.03 8.92,4.19 8.76,4.37 8.76,4.45 8.35,4.95 7.95,5.69 7.61,6.47 7.53,6.6 7.49,6.73 7.47,6.73 7.47,6.73 7.43,6.71 7.37,6.71 L 7.28,6.68 V 6.59 C 7.2,5.69 7.08,5.08 6.91,4.49 6.83,4.16 6.8,4 6.59,3.44 6.33,2.75 6.2,2.32 6.2,2.21 6.17,2.09 6.05,2.08 6,2.2 5.97,2.31 5.99,2.39 6.11,2.55 6.21,2.75 6.32,2.97 6.73,4.15 7,4.96 7.07,5.13 7.2,6.29 7.23,6.68 7.23,6.68 7.2,6.68 7.13,6.68 6.97,6.75 6.89,6.83 6.83,6.87 6.81,6.89 6.81,6.89 6.81,6.89 6.75,6.73 6.68,6.56 6.53,6.07 6.4,5.77 6.2,5.27 5.36,3.43 4.39,2.01 3.36,1.13 2.64,0.571 2.01,0.14 1.49,0 1.32,0 1.02,0 0.887,0 Z' style='fill:rgb(0, 140, 255);stroke:black;stroke-width:0.6;stroke-linejoin:round;stroke-linecap:round;'/></g></svg>",
	
	"about:config": "resource://normandy/skin/shared/heartbeat-icon.svg",
	"about:user-chrome-files": "chrome://browser/skin/accessibility.svg",
};

var EXPORTED_SYMBOLS = ["LinkWinActorChild"];
ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
const LINK_SELECTOR = "link[href]:-moz-any([rel~='icon'],[rel~='apple-touch-icon'],[rel~='apple-touch-icon-precomposed'],[rel~='fluid-icon'],[rel~='mask-icon'])";

var noop = () => {};
var re = /^(?:about|chrome|resource)$/;
var idn = Cc["@mozilla.org/network/idn-service;1"].getService(Ci.nsIIDNService);

var once = function() {
	delete this.handleEvent;
	var doc = this.document;
	var docURI = doc.documentURIObject, host;
		if (re.test(docURI.scheme)) host = docURI.specIgnoringRef;
		else try {
			host = idn.convertToDisplayIDN(Services.eTLD.getBaseDomain(docURI), {});
		} catch {
			try {host = docURI.displayHost;}
			catch {host = docURI.specIgnoringRef;}
		}
		var icon = ICONS[host];
		if (!icon) return this.handleEvent = noop;

		this._icon = icon;
		this.onHeadParsed(doc.head || doc.documentElement);
}

class LinkWinActorChild extends JSWindowActorChild {
	handleEvent = once;
	onHeadParsed(target) {
		for (let link of target.querySelectorAll(LINK_SELECTOR))
			link.remove();
		var link = this.document.createElementNS("http://www.w3.org/1999/xhtml", "link");
		link.setAttribute("rel", "icon");
		link.setAttribute("sizes", "any");
		link.setAttribute("href", this._icon);
		target.append(link);
	}
	onLinkEvent(link) {
		if (!link.matches(LINK_SELECTOR) || link.href == this._icon) return;
		link.href = this._icon;
		link.setAttribute("rel", "icon");
		link.setAttribute("sizes", "any");
		if (link.hasAttribute("type"))
			link.removeAttribute("type");
	}
	handleEvent(e) {
		switch (e.type) {
			case "DOMLinkAdded":
			case "DOMLinkChanged":
				this.onLinkEvent(e.target);
				break;
			case "pageshow":
				this.onHeadParsed(e.target.head || e.target.documentElement);
				break;
		}
	}
}


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

Выделить код

Код:

const ICONS = { // "поддомен + домен, или адрес для about|chrome|resource": "иконка"

	"yandex.ru": "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16'><g><rect rx='2' ry='2' width='16' height='16' style='fill:rgb(231, 43, 90);'/><path d='M 8.56,2 C 6.31,2 4.49,3.5 4.49,5.99 4.49,7.49 5.31,8.48 6.97,9.57 L 4,13.5 V 14 H 5.76 L 8.53,9.57 H 9.47 V 14 H 11 V 2 Z M 9.47,8.48 H 8.67 C 7.36,8.48 6.05,7.98 6.05,5.99 6.05,4 7.26,3 8.47,3 H 9.47 Z' style='fill:white;'/></g></svg>",
	get "passport.yandex.ru"() {
		return this["yandex.ru"];
	},
	"nnmclub.to": "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16'><g><path d='M 0.887,0 C 0.54,0.14 0.289,0.279 0.135,0.711 0.051,0.851 0.015,0.991 0,1.27 -0.009,1.71 0.061,2.16 0.325,3.05 0.564,3.88 0.612,4.12 0.612,4.37 0.612,4.48 0.612,4.56 0.588,4.67 0.457,5.43 0.457,6.07 0.588,6.56 0.672,6.87 0.779,7.09 0.947,7.28 1.21,7.57 1.49,7.73 2.05,7.87 L 2.27,7.91 2.11,7.96 C 1.87,8.01 1.71,8.08 1.55,8.19 1.33,8.31 1.22,8.41 1.09,8.59 0.947,8.65 0.887,8.83 0.839,8.99 0.803,9.17 0.792,9.41 0.827,9.65 0.851,9.93 0.851,9.93 0.827,10 0.827,10.1 0.767,10.3 0.708,10.5 0.588,10.9 0.564,11.1 0.564,11.2 0.564,11.5 0.612,11.6 0.875,11.8 1.15,12.2 1.18,12.3 1.15,12.6 1.1,13.2 1.18,13.6 1.39,13.7 1.49,13.7 1.6,13.9 1.75,14 1.93,14 2.05,14.1 2.28,14.4 2.48,14.5 2.55,14.5 2.64,14.5 2.73,14.7 2.73,14.7 2.87,14.7 3.04,14.7 3.04,14.7 3.47,14.5 4.03,14 4.19,13.9 4.44,13.9 4.55,13.7 4.6,13.7 4.68,13.7 4.88,13.6 5.11,13 5.35,11.9 5.39,11.8 5.43,11.6 5.47,11.5 5.65,10.9 5.89,10.4 6.12,10 6.24,9.83 6.48,9.59 6.49,9.59 6.49,9.59 6.49,9.75 6.48,10.1 6.44,10.3 6.43,10.5 6.28,11.1 6.12,11.5 6.08,11.7 6.05,12 6.03,12.4 6.11,12.6 6.21,12.9 6.32,13 6.43,13 6.57,13 6.71,12.9 6.81,12.6 6.91,12.4 7.07,12 7.11,11.7 7.11,11 7.11,10.7 7.13,10.4 7.27,10 7.35,9.75 7.32,9.75 7.37,9.83 7.52,10.1 7.64,10.7 7.69,11.3 7.72,11.6 7.72,12.2 7.69,12.4 7.64,13 7.61,13.6 7.68,14 7.72,14.4 7.76,14.5 8.01,14.5 8.15,14.7 8.31,14.8 8.67,15.5 8.92,15.9 9.03,15.9 9.11,16 9.17,16 9.17,16 9.33,16 9.52,16 9.52,16 9.77,15.9 10.1,15.7 10.1,15.7 10.4,15.7 10.7,15.7 10.7,15.7 10.7,15.7 11,15.6 11.1,15.5 11.4,14.9 11.4,14.9 11.4,14.8 11.5,14.7 11.5,14.5 11.6,14.4 11.7,14.1 12.2,13.9 12.2,13.9 12.2,13.7 12.4,13.6 12.4,13.6 12.4,13 12.4,12.6 12.5,12.4 12.5,12.3 12.5,12.3 12.5,12.2 12.7,12 12.8,11.7 12.8,11.6 12.8,11.5 12.8,11.2 12.8,11.1 12.8,11.1 12.7,10.7 12.4,10.3 12,9.93 11.9,9.83 11.9,9.83 11.9,9.83 12.2,9.93 12.7,9.93 12.9,9.93 13.7,9.75 14,9.08 14.1,7.84 14.1,7.76 14.3,7.59 14.3,7.49 14.3,7.27 14.3,7.19 14.5,7.01 14.5,6.83 14.8,6.6 15.1,6.19 15.7,5.24 15.9,4.85 16,4.41 16,4.31 16,4.25 16,4.03 16,3.84 16,3.76 16,3.69 15.7,3.03 15.2,2.68 14.3,2.75 13.7,2.76 13,2.97 12.2,3.32 12,3.4 11.6,3.63 11.4,3.81 10.2,4.49 9.11,5.55 8.08,6.85 7.95,7 7.85,7.11 7.85,7.11 7.85,7.11 7.84,7.05 7.84,7.04 7.76,6.93 7.72,6.87 7.61,6.81 L 7.53,6.73 7.64,6.47 C 7.92,5.92 8.13,5.51 8.31,5.23 8.35,5.12 8.51,4.91 8.76,4.63 9.43,3.73 9.68,3.47 9.77,3.35 10,3.21 10,3.2 10,3.15 10.1,3.05 10,2.92 10,2.87 9.95,2.87 9.95,2.91 9.84,2.97 9.84,3.11 9.52,3.44 9.11,4.03 8.92,4.19 8.76,4.37 8.76,4.45 8.35,4.95 7.95,5.69 7.61,6.47 7.53,6.6 7.49,6.73 7.47,6.73 7.47,6.73 7.43,6.71 7.37,6.71 L 7.28,6.68 V 6.59 C 7.2,5.69 7.08,5.08 6.91,4.49 6.83,4.16 6.8,4 6.59,3.44 6.33,2.75 6.2,2.32 6.2,2.21 6.17,2.09 6.05,2.08 6,2.2 5.97,2.31 5.99,2.39 6.11,2.55 6.21,2.75 6.32,2.97 6.73,4.15 7,4.96 7.07,5.13 7.2,6.29 7.23,6.68 7.23,6.68 7.2,6.68 7.13,6.68 6.97,6.75 6.89,6.83 6.83,6.87 6.81,6.89 6.81,6.89 6.81,6.89 6.75,6.73 6.68,6.56 6.53,6.07 6.4,5.77 6.2,5.27 5.36,3.43 4.39,2.01 3.36,1.13 2.64,0.571 2.01,0.14 1.49,0 1.32,0 1.02,0 0.887,0 Z' style='fill:rgb(0, 140, 255);stroke:black;stroke-width:0.6;stroke-linejoin:round;stroke-linecap:round;'/></g></svg>",
	
	"about:config": "resource://normandy/skin/shared/heartbeat-icon.svg",
	"about:user-chrome-files": "chrome://browser/skin/accessibility.svg",
};

var EXPORTED_SYMBOLS = ["LinkWinActorChild"];
const LINK_SELECTOR = "link[href]:-moz-any([rel~='icon'],[rel~='apple-touch-icon'],[rel~='apple-touch-icon-precomposed'],[rel~='fluid-icon'],[rel~='mask-icon'])";

var noop = () => {};
var re = /^(?:about|chrome|resource)$/;

var once = function() {
	delete this.handleEvent;
	var doc = this.document;
	var docURI = doc.documentURIObject, host;
		if (re.test(docURI.scheme)) host = docURI.specIgnoringRef;
		else 
			try {host = docURI.displayHost;}
			catch {host = docURI.specIgnoringRef;}

		var icon = ICONS[host];
		if (!icon) return this.handleEvent = noop;

		this._icon = icon;
		this.onHeadParsed(doc.head || doc.documentElement);
}

class LinkWinActorChild extends JSWindowActorChild {
	handleEvent = once;
	onHeadParsed(target) {
		for (let link of target.querySelectorAll(LINK_SELECTOR))
			link.remove();
		var link = this.document.createElementNS("http://www.w3.org/1999/xhtml", "link");
		link.setAttribute("rel", "icon");
		link.setAttribute("sizes", "any");
		link.setAttribute("href", this._icon);
		target.append(link);
	}
	onLinkEvent(link) {
		if (!link.matches(LINK_SELECTOR) || link.href == this._icon) return;
		link.href = this._icon;
		link.setAttribute("rel", "icon");
		link.setAttribute("sizes", "any");
		if (link.hasAttribute("type"))
			link.removeAttribute("type");
	}
	handleEvent(e) {
		switch (e.type) {
			case "DOMLinkAdded":
			case "DOMLinkChanged":
				this.onLinkEvent(e.target);
				break;
			case "pageshow":
				this.onHeadParsed(e.target.head || e.target.documentElement);
				break;
		}
	}
}

Отредактировано Dumby (05-01-2022 21:05:28)

Отсутствует

 

№18605-01-2022 21:46:46

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby пишет

и импорт модулей записал иначе, и, вроде, завелось.
Но там же дофига всего, так что нужно тестировать

Да, отлично, завелось, работает! Вроде всё в норме.

яд.иск :usch:. Это ты залил для всех, кроме меня

Понял. Тогда буду, как и скриншоты, заливать на https://www.upload.ee/

Ладно, попробуем. Итак, в первом скрипте меняем первую строку на
Cu.getGlobalForObject(Cu).ChromeUtils.registerWindowActor("LinkWinActor", {

Да, тоже всё завелось и отлично работает! Как и в актуальных версиях.
Огромное Вам Спасибо! Всё получилось великолепно!

отчёт :beer:
Image_001.png

Отсутствует

 

№18712-01-2022 22:41:01

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 244
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Здесь https://forum.mozilla-russia.org/viewto … 08#p792708 скрипт ucjsDownloadsManager.uc.js. Никак не могу добиться его работы через UserChromeFiles от VitaliyV, его user_chrome_files установлен, из него работают дополнительные панели инструментов, их настраивать не пришлось, они заработали сразу. Возможно, не туда прописываю или неправильно прописываю. Пробовал запустить  другие скрипты, тоже не получилось.

Отсутствует

 

№18812-01-2022 22:58:50

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

shadow_user пишет

Никак не могу добиться его работы через UserChromeFiles от VitaliyV, его user_chrome_files установлен

Вот тут уже рабочий пример подключения скриптов.
Так до сих пор, с несущественными правками, всё и работает вплоть до 98 [nightly]. Единственное ucf_wheretoopenlink.js отвалился с 95 [firefox]
scripts, scripts2, scripts3 в путях - это папки в которые я  положил скрипты.
https://forum.mozilla-russia.org/viewto … 76#p794876
Читать надо тему, а так методом тыка ничего не получится конечно. Этот комплект не этот, куда достаточно просто скрипт закинуть, ничего не прописывая, и даже startupCache не надо чистить.

Отредактировано sandro79 (12-01-2022 23:07:48)

Отсутствует

 

№18913-01-2022 10:35:50

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 244
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

sandro79 пишет

Вот тут уже рабочий пример подключения скриптов.

Не получилось ничего. Ясное дело, тему читал, startupCache чистил кнопкой в настройках UCF. В умолчальных скриптах разкомментирую скрипт автоскрытия тулбара, и тоже не работает. Менял на ваш CustomStylesScripts.jsm, рядом с ним в папку scripts2 ложил ucjsDownloadsManager2.uc.js, и увы.

Отсутствует

 

№19013-01-2022 13:17:57

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

shadow_user
Скачайте мой настроенный комплект и разбирайтесь в чём у вас проблема.
startupCache надёжнее чистить вручную, т.к. очень часто ни кнопкой комплекта, ни кнопкой в about:support он почему-то не чистится.

Отсутствует

 

№19113-01-2022 14:50:18

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 244
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

sandro79 пишет

Скачайте мой настроенный комплект и разбирайтесь в чём у вас проблема.

Комплект заработал, вижу новые иконки папок и некоторых кнопок, но... кроме прогресса загрузки :D , упрямо не появляется. Может, и еще что не заработало. В about:profiles вижу два профиля, один default - "по умолчанию, сейчас используется и не может быть удален", второй default -esr - "сейчас используется другим приложением и не может быть удален", что-то тут не так, я сам еще один профиль не создавал.
Попробую с чистым профилем или сделаю новый портабельный.

Отсутствует

 

№19213-01-2022 15:46:08

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

shadow_user пишет

кроме прогресса загрузки

Вот эти два чекбокса должны быть включены.
Вы наверно в настройки комплекта даже не заходили, раз кроме изменений иконок средствами user_chrome.manifest ничего не заметили.
about:user-chrome-files - открыть настройки во вкладке.

Отсутствует

 

№19313-01-2022 17:51:48

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 244
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

sandro79 пишет

Вот эти два чекбокса должны быть включены.

Искренне благодарен за терпение и помощь! По прочтению темы я помню, что один или два д.б. включены, включал по одному, не помогло. Создал новый профиль, включил два, наконец-то прогресс загрузки показался! Возникла пара вопросов:
1. В наборе два скрипта, ucjsDownloadsManager.uc.js и ucjsDownloadsManager2.uc.js, зачем два и в чем разница? Какой из них у меня срабатывает? Теоретически я не большой спец, мне, может, и одного хватило бы.
2. Как отключить лишний, если он действительно лишний, и какой? Или их однозначно должно быть два?
3. А вот это более важно для меня - окно прогресса закрывается по окончании загрузки, а я привык, чтоб оно оставалось на экране, типа чтобы успеть репу почесать, как это сделать?
4. Табы стали переключаться наведением мышки, но я консерватор. Это работа, видимо, судя по названию, скрипта tabs_focus.js в файле. Для отключения достаточно его удалить\переименовать, или можно где-то закомментировать команду вызова?
5. Какой скрипт или стиль показывает фавиконку в строке адреса?

Отредактировано shadow_user (13-01-2022 17:53:34)

Отсутствует

 

№19413-01-2022 18:27:49

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

shadow_user пишет

В наборе два скрипта, ucjsDownloadsManager.uc.js и ucjsDownloadsManager2.uc.js, зачем два и в чем разница?

Это один скрипт разделён на два под особенности комплекта user_chrome_files, нужны оба скрипта и они оба подключены.
Чтоб окно прогресса не закрывалось, нужно в обоих скриптах найти строку var closeWhenDone = true; и вместо true вписать false, и следите чтоб кодировка скрипта оставалась UTF8 без BOM после правки и сохранения.

скрипта tabs_focus.js в файле. Для отключения достаточно его удалить\переименовать, или можно где-то закомментировать команду вызова?

Его можно удалить, ну и строку { path: "scripts3/tabs_focus.js", ucfobj: false, }, в CustomStylesScripts.jsm удалить или // закомментировать.
Так и с другим всем ненужным, я просто всё скинул вам с 91-ой версии, лень было по-новой возится или удалять почти всё.

Какой скрипт или стиль показывает фавиконку в строке адреса?

Это скрипт авторства Vitaliy V., только немного изменённый под себя по советам автора. Обсуждение начиная с первой страницы этой темы.
Скрипт исправно работает вплоть до 98 [nightly], но только в user_chrome_files, в классических комплектах его запустить не удалось.

Отсутствует

 

№19513-01-2022 19:17:01

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 244
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

sandro79 пишет

Это один скрипт разделён на два

Все понял и исправил под свои пожелания, кроме: не смог идентифицировать скрипт (или стиль?) для фавиконки, просьба нацелить. Дело в том, что у меня есть скрипт, который показывает фавиконку в размере 22х22, а не 16х16, не скажу, что это лучше или хуже, но мне нужно выбрать один. Так же вроде логично, чтобы фавиконка была не перед замком, а перед урлом, вроде и вы в какой-то теме об этом писали
78.png

Отсутствует

 

№19613-01-2022 19:34:13

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

shadow_user пишет

не смог идентифицировать скрипт (или стиль?) для фавиконки, просьба нацелить

Скрипт favicon_in_urlbar.js

который показывает фавиконку в размере 22х22, а не 16х16

Ну это тоже можно настроить, см. height и width.
У Виталия в скрипте width: auto !important; прописано, но мне как-то попался

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

вроде и вы в какой-то теме об этом писали

Да не, я наоборот у Виталия спрашивал как её перед замком поставить. У Ариса когда-то так было, привык.
identity.before(faviconinurlbar); замените на identity.after(faviconinurlbar);
Вам наверно лучше будет использовать оригинальный авторский скрипт, а не мой правленный.

Отредактировано sandro79 (13-01-2022 19:49:48)

Отсутствует

 

№19713-01-2022 20:40:56

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 244
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

sandro79 пишет

Скрипт favicon_in_urlbar.js

Ну конечно, нужно быть слепым, чтобы не заметить. На сей момент со всем разобрался, спасибо! :beer:
Почему два скрипта, favicon_in_urlbar.js и favicon_in_urlbar2.js?
Включил остальные птички в UCF, теперь вижу множество кнопок. "Закрыть другие вкладки" это скрипт Close-Tabs-button.js? И какой скрипт кнопки "Показать загрузки"? Просто мечтал об этой кнопке.

Отсутствует

 

№19813-01-2022 20:52:45

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1730
UA: Firefox 91.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

shadow_user пишет

Почему два скрипта, favicon_in_urlbar.js и favicon_in_urlbar2.js?

Ну favicon_in_urlbar2.js это Арисовский скрипт, ну просто оставил для потомков :D Он не подключен.

"Закрыть другие вкладки" это скрипт Close-Tabs-button.js?

Ну да. Там два в одном, ещё закрыть текущую.

И какой скрипт кнопки "Показать загрузки"?

To_switch_proxy.js Ну там две кнопки в одном скрипте - переключить прокси и показать загрузки когда-то Виталий по моей просьбе делал.
Если хотите их разделить, то как разделить их я не знаю.
Сейчас в кнопке прокси уже нет кнопки загрузок. Я пока старой, два в одном, пользуюсь.

Отредактировано sandro79 (13-01-2022 21:00:20)

Отсутствует

 

№19913-01-2022 21:15:06

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1432
UA: Firefox 96.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby
Приветствую! В [firefox] 96 не работает этот скрипт: https://forum.mozilla-russia.org/viewto … 56#p790256, или может что то не так сделал ?


Win7

Отсутствует

 

№20013-01-2022 22:31:32

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

kokoss пишет

В [firefox] 96 не работает этот скрипт

Проверил на 96 — вроде работает.

или может что то не так сделал ?

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

Отсутствует

 

Board footer

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