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

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

Сustom Buttons » Custom Buttons » Вчера 21:49:00

_zt пишет

А кнопка, та что для base64, ее очень сложно для ucf сделать, можете адаптировать?

Да вроде не сложно, хотелось бы думать
[spoiler][code](async self => CustomizableUI.createWidget(self = {
    label: "64",
    tooltiptext: "64",
    id: "ucf-fileToBase64",
    localized: false,
    onCreated(btn) {
        btn._handleClick = this.pick;
        btn.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIAQ/wCAEf8AgA//AIAR/wCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgBX/AIAVAAAAAAAAAAD/AIAo/wCA//8AgP//AID//wCA//8AgP//AIAoAAAAAAAAAAAAAAAAAAAAAP8AgBL/AID//wCA//8AgA3/AIAL/wCA//8AgP//AID//wCA//8AgP//AID//wCA//8AgBAAAAAAAAAAAAAAAAD/AIAR/wCA//8AgP//AIAK/wCACv8AgP//AID//wCAIf8AgAX/AIAh/wCA//8AgP//AIAQAAAAAAAAAAAAAAAA/wCACv8AgP//AID//wCAB/8AgAf/AID//wCA//8AgAUAAAAA/wCABf8AgP//AID//wCACgAAAAD/AIAQ/wCADP8AgCH/AID//wCA//8AgAf/AIAH/wCA//8AgP

Сustom Buttons » Custom Buttons » Вчера 19:39:06

vv07 пишет

Научите пожалуйста, как делать тут?
Что бы свои иконки поставить.

Нужно вписать (заменить на свой) адрес ссылки на файл иконки.
Самое простое — по протоколу file:
Жмём Ctrl+O, выбираем нужное изображение,
копируем из адресной строки ссылку на открывшееся изображение,
и вписываем.


Можно по протоколу data: (всё своё ношу с собой)
Тут, для вэб-человеков, говорят, есть онлайн-кодировщики,
можно поискать.
Или прямо в CB-редакторе некоторые конвертировали
кнопками [Обзор…] и [⇒ base64] и копированием получившейся
ссылки с <menulist>'а (слева от них).
Или, вот у меня есть старая, крайне аскетичная кнопка конвертации,
нажал, выбрал, и всё, в буфере обмена base64, остаётся только вставить.
[spoiler][code]custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E64%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEA

Сustom Buttons » Custom Buttons » Вчера 12:28:54

vv07 пишет

в старой версии Compact Menu, с иконками симпатичнее было

Вот об этом я и говорю, что описание должно быть персонализированным.
Оказывается, возможность исключить пункты не важна,
а возможность задать иконки — важна (хотя в кнопке по ссылке
ничего подобного нет, это чем-то другим у тебя было сделано).

Обнаружились проблемы при работе Compact Menu. В ряде случаев, происходит такое

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


Но косяк (другой) есть. Всё-таки, после перемещения #bookmarksMenu,
без пересборки _placesView портится контекстное меню его закладок,
так и не понятно почему.
Новая версия. Заодно, объект {"id": "icon"}, куда вписывать свои иконки.
[spoiler][code]this.parentNode.nodeName == "toolbarpaletteitem" || (ico

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

ВВП пишет

Как бы убрать #toggle_PersonalToolbar там ,где мне надо? Там id="toolbar-context-menu" везде одинаковый. И дотянуть до Nav-bar ,к примеру, ну никак...

Видимо, зависит от того, где надо.
На скрине, как я понимаю, на виджетах, создаваемых для WebExtensions.
Можно, например, так попробовать

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

Выделить код

Код:

#toolbar-context-menu > menuitem.customize-context-manageExtension:not([hidden]) ~ #toggle_PersonalToolbar {
	display: none !important;
}


А «дотянуть до Nav-bar» в смысле поднять выше остальных?
Вроде -moz-box-ordinal-group: 0 !important; должен работать.


vv07
Хорошо бы писать, что кнопка делала.
Не столько вообще, а, скорее, что делала для тебя.
В том смысле, что важно, что не очень, а что совсем не использовалось.
Это так, примечание общего характера.


Вот, скажем, Open URLs, так там написано, что для Thunderbird
Допустим, запишу так, подойдёт?
[spoiler][code]/*Initialization Code*/

(n => {
    var inBackground = false;
    var data = [{
        lab:

Сustom Buttons » Custom Buttons » 13-06-2021 00:24:20

vv07
Что за странная реакция? При чём тут взаимопомощь?
Я на полном серьёзе говорю, что объяснить ВСЁ, что произошло
не представляется возможным. Это нереальный объём.


Тут и от версии к версии, зачастую, по нескольку раз,
даже что-то простое обсуждается и всё равно без большого успеха.
А ты говоришь 54-78. Это прыжок через про́пасть.

Сustom Buttons » Custom Buttons » 12-06-2021 23:16:56

ВВП пишет

А просто сделать всегда включенной?

Я посмотрел на синтетической странице,
и у меня и так работает в <textarea>.
А если выставить layout.spellcheckDefault
в значение 2, то и в <input> тоже.


Ну, конечно, если у них арибут spellcheck
специально не установлен в false.
Какой-то заложенной возможности
автоматически это игнорировать найти не смог.

А можна на эту кнопку предупредиловку сделать?

this._handleClick = () => Services.prompt.confirm(null, "Title", "Msg") && ps.setIntPref(s, ps.getIntPref(s, 2) ? 0 : 2);


vv07 пишет

как поправить

Никак. Годы (!) просиживания в уютной благодати необновленчества,
(при полном отсутствии интереса к изменениям в браузере) нельзя поправить.


momo2000 пишет

Как убрать перенос длинных ссылок в две строки?

Никак. Нельзя убрать то, чего нет.
Никакого «переноса длинных ссылок в две строки» в коде не предусмотрено.
Есть браузерное ограничение ширины тултипа max-width: 40em;
можно задать своё, побольше.


[

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 12-06-2021 19:32:02

sandro79 пишет

коду

Что-то там навёрнуто...

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

Выделить код

Код:

(async n => {
	var menuitem = n("menu_pageInfo").cloneNode(false);
	menuitem.id = "context-" + menuitem.id;
	menuitem.removeAttribute("key");
	n("context-inspect-a11y").before(menuitem);
})(id => document.getElementById(id));

Сustom Buttons » Custom Buttons » 11-06-2021 23:26:12

ВВП пишет

код сдох

Сдыхать там нечему. Можно в обезьяну переложить,
раз уж многопроцессность не отключена.

Сustom Buttons » Custom Buttons » 09-06-2021 12:31:23

ВВП пишет

Нет поиска сразу, сначала в поиске появиться . А сразу искать в Duck ? Забыл где рихтануть..

Типа это что ли? (ответ).
В custom_script_win.js, и вот тут как раз в «... по событию "load" не раньше».


Собственно, эквивалентно такой правке
%FOX%\browser\omni.ja\modules\UrlbarSearchOneOffs.jsm

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

Выделить код

Код:

/*
    if (
      userTypedSearchString &&
      engine &&
      (event.shiftKey || where != "current")
    ) {
*/
    if (engine && !event.shiftKey) {


vending_machine
https://cdn.waterfox.net/AMO/xul/294/294922/   :dumb:

Сustom Buttons » Custom Buttons » 08-06-2021 17:22:10

ВВП пишет

Как теперь OK на Да сменить?

Перед bw.visibility = true;
document.getElementById("commonDialog")._buttons.accept.label = "Да";

Сustom Buttons » Custom Buttons » 08-06-2021 09:42:43

_zt пишет

А как подсказку многострочной сделать?

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

Выделить код

Код:

/*
				"Some tooltip text."
*/
				"Some&#xA;tooltip&#xA;text."

ВВП пишет

А это окно можно фиксировать не по центру? Куда не выставлю, оно всегда в центре...

Вроде так работает в custom_script_all_win.js
(не в «... по событию "load" не раньше», а просто добавить в конец).

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

Выделить код

Код:

try {if (location == "chrome://global/content/commonDialog.xhtml") {
	let args = Array.from(arguments[0].enumerator, x => x.value);
	if (args.includes("Внимание !") && args.includes("Закрыть все вкладки ?")) {
		let bw = docShell.treeOwner.QueryInterface(Ci.nsIBaseWindow);
		bw.visibility = false;
		onpageshow = () => Promise.resolve().then(() => {
			moveTo(100, 100);
			bw.visibility = true;
		});
	}
}} catch {}

Сustom Buttons » Custom Buttons » 07-06-2021 08:12:11

_zt
Вариант

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

Выделить код

Код:

/*
			win.document.getElementById("star-button-box")
				.after(win.document.importNode(df, true));
			this.notify();
		})(win);
	},
*/
			var clone = win.document.importNode(df, true);
			clone.firstChild.oncontextmenu = this.about;
			win.document.getElementById("star-button-box").after(clone);
			this.notify();
		})(win);
	},
	about(e) {
		var gb = e.view.gBrowser;
		gb.selectedTab = gb.addTrustedTab(`about:${
			e.ctrlKey ? "debugging#/runtime/this-firefox" : "performance"
		}`);
	},

Сustom Buttons » Custom Buttons » 05-06-2021 08:48:09

ВВП пишет

Поиск из контекста (все поисковики сразу) Помнится в schemas ритовали , но теперь никак.

Рихтовали не schemas, а ext-search.js
И рихтовка в Firefox 89 работает. Там только это убрали (баг),
что совершенно не важно.

не могу загасить Ctrl+ клик по папке с закладками и все они открываются...Как прибить это?

Для папок в Панели закладок, Меню, ...
%FOX%\browser\omni.ja\chrome\browser\content\browser\browser-places.js
[spoiler][code]/*
    // Only handle middle-click or left-click with modifiers.
    let modifKey;
    if (AppConstants.platform == "macosx") {
      modifKey = aEvent.metaKey || aEvent.shiftKey;
    } else {
      modifKey = aEvent.ctrlKey || aEvent.shiftKey;
 

Сustom Buttons » Custom Buttons » 02-06-2021 23:24:06

ВВП пишет

Поставим вопрос по другому: onclick="FullZoom.reset(); FullZoom.resetScalingZoom();"  - это клик  по масштабу в browser.xhtml , а мне надо такой код
Рихтовать сам browser.xhtml  - не прошло , как решить проблему ?

В смысле код в сам атрибут "onclick" вписать?
Тогда его надо сериализировать под это дело.


Вот, например, код — полный сброс, и установка твоего добра:

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

Выделить код

Код:

(lc => {
	var {_cps2, name} = FullZoom;
	_cps2.removeByName(name, lc, {handleCompletion() {
		_cps2.setGlobal(name, 1.15, lc);
		for(var [url, zoom] of Object.entries({

			"about:addons": 1.09,
			"hdrezka-ag.com": 1.21,
			"kinokrad.co": 1.21,
			"bigcinema.tv": 1.21,
			"filmix.ac": 1.21,
		}))
			_cps2.set(_cps2.extractDomain(url), name, zoom, lc);
	}});
})(Cu.createLoadContext());


А вот — этот же код, пропущенный через XMLSerializer,
и готовый быть вставленным как атрибут:
[spoiler][code](lc =&gt; {&#xA;&#9;var {_cps2, name} = FullZoom;&#xA;&#9;_cps2.removeByName(name,

Сustom Buttons » Custom Buttons » 31-05-2021 23:18:49

Dobrov пишет

3) масштаб с отображением процентов на кнопке

Отображение масштаба на бэйдже кнопки что ли,
типа как у кнопок, которые создаёт Firefox для WebExtensions?
«Очки» — эпический комбайн, неудобовместительный в голове,
приступить можно, но как оно сложится — непонятно вообще.


ВВП пишет

Есть код. масштаб на все.  на конкретную страницу никак? К, примеру , на about:addons

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

Выделить код

Код:

((url, val) => FullZoom._cps2.set(
	FullZoom._cps2.extractDomain(url),
	FullZoom.name, val, Cu.createLoadContext()
))("about:addons", 2.4);

Сustom Buttons » Custom Buttons » 23-05-2021 15:35:08

Dobrov пишет

не смог устранить

Это надо какой-нибудь auxclick() сюда вписать

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

Выделить код

Код:

…
			//var id, lo = {command: reset, mousedown: reset};
			var id, lo = {command: reset, mousedown: reset, auxclick: e => e.button != 1 || reset(e)};

ВВП пишет

А , вот :hover на кнопку стилем можно делать? Чтоб при этом иконка кнопки другая стала...

Вспоминай.

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

Выделить код

Код:

#custombuttons-button25:hover > image {

	list-style-image: none !important;
	object-position: 16px 0px !important;
	background-position: center !important;
	background-repeat: no-repeat !important;

	background-image: url(chrome://browser/content/robot.ico) !important;
}

Сustom Buttons » Custom Buttons » 22-05-2021 23:06:25

Dobrov пишет

1) Если tooltip картики есть, то нужно сохранять картинку с именем всплывающей подсказки.

Без понятия как в этой концепции сохранения такое сделать.
Подсунуть имя в internalSave() — не прокатит.
Ну, вот, разве что отслеживать загрузки и переименовывать.

2) на двойной клик мыши надо "повесить" другую полезную функцию на твоё усмотрение. Желательно поиск дубликата этой картинки в Яндекс.

Это типа надо какую-то вкладку открыть?
Добавил такое, там, в конце, dblclick(win, imgURL) {}
А какой адрес открывать — сам смотри.
[spoiler][code]var EXPORTED_SYMBOLS = ["MouseImgSaverChild", "MouseImgSaverParent"]; // сохранить картинку — перетащив вправо; колёсиком

var u = {get it() {
    delete this.it;
    return this.it = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools);
}};
for(let name of ["E10SUtils", "PrivateBrowsingUtils"])
    ChromeUtils.defineModuleGetter(u, name, `resource://gre/modules/${name}.jsm`);

class MouseImgSaverChild extends JSWindowActorChil

Сustom Buttons » Custom Buttons » 20-05-2021 19:03:31

Dobrov пишет

Если изменить опции в about:config, то скрипт по-прежнему сохраняет в старую папку.


Dumby - помоги доработать код, чтобы при каждой записи файла путь брался из опции "ucf_save.dirs"
Если такой опции нет, берётся значение по-умолчанию. Мои изменения в коде: строка 100 и далее…

Во навернул идею. Хорошо бы поподробнее. Может так :/
[spoiler][code]/*
            try {var dir = wref.get().Services.prefs.getComplexValue("browser.download.dir", Ci.nsIFile);} catch {var dir = wref.get().Services.dirsvc.get("DfltDwnld", Ci.nsIFile);};
            var pics = wref.get().Services.prefs.getStringPref("ucf_save.dirs", "_Web||_Images|1").split('|');
            dir.append(pics[2]);
            dir.exists() && dir.isDirectory() || dir.create(dir.DIRECTORY_TYPE, 0o777); // создать папку, если не существует…
            var {path} = dir; // папка Загрузки:/_Images/[title]/файл
            Object.defineProperty(this, "set", {get() {
                var win = wref.get();
                var title = pics[3] ? win.gBrowser.selectedTab.label.slice(0, 100) : ''

Сustom Buttons » Custom Buttons » 19-05-2021 23:45:40

Dobrov пишет

Я добавлял события mousedown, click, auxclick - все они не реагируют на клик средней кнопки мыши

Если заменил dblclick на auxclick в child.events,
тогда надо заменить dblclick на auxclick и в само́м class MouseImgSaverChild,
а так же, в handleEvent(), заменить if (e.button) на if (e.button > 1)
autoscroller? Ну, я уже упоминал, и ноль реакции, значит не проблема (выключен?).

Нужно исправить баг: при первом открытии последняя строка меню не с родной иконкой.

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

Выделить код

Код:

/*
			if (!pref.img) img
				? node.setAttribute("image", img)
				:	/этой кнопки/.test(node.getAttribute("label")) ? node.setAttribute("image", "chrome://browser/skin/menu.svg") : node.setAttribute("image", this.UserImg);
				// : node.removeAttribute("image");
*/
			node.nextSibling && node.setAttribute("image", img || this.UserImg);

просьба доработать кнопку переключения параметров Quick Toggle about:config.

Самоотвод.


ВВП пишет

Окно по ПКМ вы

Сustom Buttons » Custom Buttons » 18-05-2021 20:39:22

_zt пишет

Этот код в 78 должен работать?

Думаю да. Добавил в 78 в custom_script_win.js — выглядит рабочим.
Только исключение тэгов для "bookmark-added" потерялось. Можно вписать.

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

Выделить код

Код:

/*
					for(var e of events) this.record(e.itemType, e.source, e.parentGuid);
*/
					for(var e of events) e.isTagging || this.record(e.itemType, e.source, e.parentGuid);

Firefox » Как сделать черным фон вокруг открытого во вкладке изображения? » 18-05-2021 18:30:48

sandro79 пишет

Ну не знаю, но у меня почему-то сработало

Где-то утверждалось обратное? :)
Tопикстартер не считается, потому что сказочник-баснописец:


tiorted пишет

userContent.css есть, до этого он уже работал для скрытия панели вкладок

Firefox » Как сделать черным фон вокруг открытого во вкладке изображения? » 18-05-2021 17:39:24

sandro79


Bug 1475511 - Extend @-moz-document syntax to let users style standalone images and videos (Firefox 63+)

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

Выделить код

Код:

@-moz-document media-document(image) {
	body {
		background: royalblue !important;
	}
}

Сustom Buttons » Custom Buttons » 18-05-2021 17:37:50

Dobrov пишет

нельзя ли в скрипт "Сохранить картинку перетаскиванием" добавить ещё сохранение картинки по событию двойной click

Нет, добавить нельзя. Объяснял же — нету в этом процессе
никакой картинки и никакого события клика на ней.


Ладно, уговорил попробовать переписать с двойным click'ом. Тоже JSM'ка,
назвать как-нибудь, например, MouseImgSaver.jsm и импортировать из custom_script.js
Предыдущий код отключить не забудь.
[spoiler][code]var EXPORTED_SYMBOLS = ["MouseImgSaverChild", "MouseImgSaverParent"];

var u = {get it() {
        delete this.it;
        return this.it = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools);
}};
for(let name of ["E10SUtils", "PrivateBrowsingUtils"])
    ChromeUtils.defineModuleGetter(u, name, `resource://gre/modules/${name}.jsm`);

class MouseImgSaverChild extends JSWindowActorChild {
    handleEvent(e) {
        if (e.button) return;
        var trg = e.explicitOriginalTarget;
        trg.nodeType == Node.ELEMENT_NODE
        && trg instanceof Ci.nsIImageLoadingContent
        &&

Сustom Buttons » Custom Buttons » 16-05-2021 22:09:52

Dobrov пишет

и тогда брать заголовок из label-тэга текущей страницы

Жаль, что слова «в другом процессе» — пустой звук.
Если title страницы Text Linky Tool не ценность, то можно так попробовать

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

Выделить код

Код:

/*
				this.drag("add");
		},
*/
				this.drag("add"),
				this.checkTLT();
		},
		checkTLT() {
			var tltHost = WebExtensionPolicy.getByID(
				"{3efee51a-7d3b-4412-a889-addc6ff6276b}"
			)?.mozExtensionHostname;
			tltHost && (this.checkTLT = () =>
				gBrowser.selectedTab.label.startsWith(tltHost) &&
				gBrowser.selectedBrowser.messageManager.loadFrameScript(this.tltFs, false)
			)();
		},
		get tltFs() {
			delete this.tltFs;
			return this.tltFs = "data:;charset=utf-8,(" + encodeURIComponent(doc => {
				var tc = doc.getElementById("lblFrom").textContent;
				doc.title = tc.slice(0, tc.lastIndexOf("("));
			}) + ")(content.document)";
		},

Первый работает в custom_script_win.js , а Второй почему-то только в кнопке CustomButton.
Нужно устранить

Сustom Buttons » Custom Buttons » 12-05-2021 21:29:50

Dobrov пишет

Это чтобы картинка сохранялась не Перетаскиванием, а по клику Колёсиком мыши на изображении

Это я понял (только тогда не понял почему ничего
не сказано что делать с autoscroller'ом и картинками-ссылками).
Я к тому, что это не называется «для кода заменить», это называется
сделать новый, совсем другой, ну кроме, собственно, сохранялки.

Сделал сохранение в путь: [Загрузки]/_Images/Имя вкладки, но вместо имени вкладки получаю "Mozilla Firefox" или "Новая вкладка". :-(

Нет, не сделал. Просто прицепил к path [Загрузки]/_Images
имя вкладки, такое, какое было на момент исполнения кода,
то есть при старте окна браузера (ничего удивительного в имени нет).
1. Это удалить
[spoiler][code]…
    var path = OS.Path.join(Services.dirsvc.get("DfltDwnld", Ci.nsIFile).path, "_Images", Title(100)); // папка [Загрузки]/_Images/Имя вкладки
    var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
    file.initWithPath(path);
    if ( !file.exists() || !file.isDirect

Board footer

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