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

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

№1600122-10-2021 22:07:18

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

Dumby
Какой большой прок от этой "яркости" ? Ну, затемняет и все ? А ,прибавить яркость выше номинала? Или это нерешаемо?

Отсутствует

 

№1600223-10-2021 06:21:19

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 559
UA: Firefox 91.0

Re: Custom Buttons

Dumby пишет

Какая-то шляпа получилась, надеюсь сойдёт.

Очень даже сойдет! :) Спасибо.

Отсутствует

 

№1600325-10-2021 12:41:28

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 356
UA: Firefox 86.0

Re: Custom Buttons

Подскажите как на 91esr запустить кнопки. Пытаюсь переехать с 52, пока не сильно то и получается. Поставил Custom Buttons 0.0.7.0.0.21, но кнопки не устанавлива.тся

Отсутствует

 

№1600426-10-2021 19:41:27

Senflex
Участник
 
Группа: Members
Зарегистрирован: 18-07-2021
Сообщений: 29
UA: Chrome 94.0

Re: Custom Buttons

Приветствую всех! Как программно закрыть все вкладки кроме активной? Заранее благодарю!!!

Отсутствует

 

№1600526-10-2021 21:26:26

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

Re: Custom Buttons

ВВП пишет

Какой большой прок от этой "яркости" ? Ну, затемняет и все ? А ,прибавить яркость выше номинала? Или это нерешаемо?

Мне-то откуда знать, что дали, то и есть.
Прибавить яркость — вряд ли, световой поток из под пикселей не поднять.
Есть filter: brightness(), можно под него переделать,
но сомневаюсь, что результат понравится.


Mishania пишет

Подскажите как на 91esr запустить кнопки. Пытаюсь переехать с 52, пока не сильно то и получается. Поставил Custom Buttons 0.0.7.0.0.21, но кнопки не устанавлива.тся

Не, 0.0.7.0.0.21 на 91 ставить не следует, там есть косяк несовместимости.
Для 91 вполне должен подойти 0.0.7.0.0.19.


А «запустить кнопки», если имеется в виду, что код, работающий в 52,
будет работать и в 91, то нет, не будет. Зависит, конечно, от кода,
могут быть исключения, но в общем случае — нет, такого ожидать не стоит.


Senflex пишет

закрыть все вкладки кроме активной

gBrowser.removeAllTabsBut(gBrowser.selectedTab);

Отсутствует

 

№1600627-10-2021 12:49:35

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

Dumby
Я не просил, так теперь прошу. Фишка эта нужна именно на прибавить. На ютубе вечно темновато , куда там убавлять? Кнопка не помешала бы.

Отсутствует

 

№1600727-10-2021 23:52:38

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

Re: Custom Buttons

ВВП пишет

Я не просил, так теперь прошу.

Я что-то непонятное написал? Нет у меня ничего.
Где-то может есть какой-то хитрый svg-фильтр, не знаю.
Или хочешь покрутить колесо, посмотреть как выглядит brightness(),
но самому код менять несподручно? Ну покрути

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

Выделить код

Код:

((bvar, obs) => {
	this.appendChild(document.createElement("style")).append(
		`#tabbrowser-tabpanels .browserStack > browser {filter: brightness(var(${bvar})) !important;}`
	);
	var pref = "CB.tabbrowser-browser.brightness";
	var gp = () => Services.prefs.getIntPref(pref, 100);
	var sp = val => Services.prefs.setIntPref(pref, val);

	var st = document.documentElement.style;
	(obs = () => st.setProperty(bvar, gp() + "%", "important"))();
	Services.prefs.addObserver(pref, obs);

	this.onwheel = e => {
		var val = gp() + (e.deltaY < 0 ? 2 : -2);
		val < 100 || val > 200 || sp(val);
	}
	this.onauxclick = e => e.button != 1 || sp(100);

	addDestructor(reason => {
		st.removeProperty(bvar);
		Services.prefs.removeObserver(pref, obs);
		reason == "delete" && Services.prefs.clearUserPref(pref);
	});
})("--cb-tabbrowser-browser-brightness");

Отсутствует

 

№1600828-10-2021 09:34:58

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

Dumby
От любите Вы жути нагнать , ну, так Вам можно. Кнопка , не супер,конечно, но все одно класс ! Жаль с первой не совместить. Типа, эта прибавляет, а, та наоборот...

Отсутствует

 

№1600928-10-2021 11:11:15

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

Re: Custom Buttons

ВВП пишет

Жаль с первой не совместить. Типа, эта прибавляет, а, та наоборот...

Ну почему же, меньше 100% brightness() тоже работает,
можно val < 100 заменить на val < 0, вот, для наглядности, - 50-100-200.

Отсутствует

 

№1601028-10-2021 12:28:39

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

Dumby
От теперь , то что надо!

Выделить код

Код:

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%3E%u041F%u0440%u0438%u0431%u0430%u0432%u0438%u0442%u044C%20/%u0423%u0431%u0430%u0432%u0438%u0442%u044C%20%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u044D%u043A%u0440%u0430%u043D%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bfile%3A///C%3A/Users/%25D0%2590%25D0%25BD%25D0%25B4%25D1%2580%25D0%25B5%25D0%25B9/Desktop/index.png%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A%28%28bvar%2C%20obs%29%20%3D%3E%20%7B%0A%09this.appendChild%28document.createElement%28%22style%22%29%29.append%28%0A%09%09%60%23tabbrowser-tabpanels%20.browserStack%20%3E%20browser%20%7Bfilter%3A%20brightness%28var%28%24%7Bbvar%7D%29%29%20%21important%3B%7D%60%0A%09%29%3B%0A%09var%20pref%20%3D%20%22CB.tabbrowser-browser.brightness%22%3B%0A%09var%20gp%20%3D%20%28%29%20%3D%3E%20Services.prefs.getIntPref%28pref%2C%20100%29%3B%0A%09var%20sp%20%3D%20val%20%3D%3E%20Services.prefs.setIntPref%28pref%2C%20val%29%3B%0A%0A%09var%20st%20%3D%20document.documentElement.style%3B%0A%09%28obs%20%3D%20%28%29%20%3D%3E%20st.setProperty%28bvar%2C%20gp%28%29%20+%20%22%25%22%2C%20%22important%22%29%29%28%29%3B%0A%09Services.prefs.addObserver%28pref%2C%20obs%29%3B%0A%0A%09this.onwheel%20%3D%20e%20%3D%3E%20%7B%0A%09%09var%20val%20%3D%20gp%28%29%20+%20%28e.deltaY%20%3C%200%20%3F%202%20%3A%20-2%29%3B%0A%09%09val%20%3C%200%20%7C%7C%20val%20%3E%20200%20%7C%7C%20sp%28val%29%3B%0A%09%7D%0A%09this.onauxclick%20%3D%20e%20%3D%3E%20e.button%20%21%3D%201%20%7C%7C%20sp%28100%29%3B%0A%0A%09addDestructor%28reason%20%3D%3E%20%7B%0A%09%09st.removeProperty%28bvar%29%3B%0A%09%09Services.prefs.removeObserver%28pref%2C%20obs%29%3B%0A%09%09reason%20%3D%3D%20%22delete%22%20%26%26%20Services.prefs.clearUserPref%28pref%29%3B%0A%09%7D%29%3B%0A%7D%29%28%22--cb-tabbrowser-browser-brightness%22%29%3B%0Athis.onclick%20%3D%20this.oncontextmenu%20%3D%20function%28event%29%20%7B%0A%20if%28event.button%20%3D%3D%202%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.altKey%20%26%26%20%21event.metaKey%29%7B%0Acustombuttons.alertBox%28this.name%2C%20this.Help%29%3B%0A%7D%3B%0A%7D%20%0Athis.oncontextmenu%20%3De%3D%3E%20%7B%20e.button%20%26%26%20%21e.ctrlKey%20%26%26%20e.preventDefault%28%29%20%7D%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%u041F%u0440%u0438%20%u043D%u0430%u0432%u0435%u0434%u0435%u043D%u0438%u0438%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20%u043D%u0430%20%u0438%u043A%u043E%u043D%u043A%u0443%2C%20%u043F%u0440%u043E%u043A%u0440%u0443%u0442%u0438%u0442%u0435%20%u043A%u043E%u043B%u0435%u0441%u043E%20%u043C%u044B%u0448%u0438%20%u0432%u0432%u0435%u0440%u0445%20/%20%u0432%u043D%u0438%u0437%2C%20%u0434%u043B%u044F%20%u0440%u0435%u0433%u0443%u043B%u0438%u0440%u043E%u0432%u043A%u0438%20%u044F%u0440%u043A%u043E%u0441%u0442%u0438.%0AC%u0440%u0435%u0434%u043D%u0438%u0439%20%u043A%u043B%u0438%u043A%2C%20%u043F%u0440%u0438%20%u043D%u0430%u0432%u0435%u0434%u0435%u043D%u0438%u0438%20%u043A%u0443%u0440%u0441%u043E%u0440%u0430%20%u043D%u0430%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%2C%20%u0441%u0431%u0440%u043E%u0441%u0438%u0442%20%u044F%u0440%u043A%u043E%u0441%u0442%u044C%20%u043F%u043E-%u0443%u043C%u043E%u043B%u0447%u0430%u043D%u0438%u044E.%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№1601128-10-2021 13:40:25

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 93.0

Re: Custom Buttons

ВВП пишет

От теперь , то что надо!

Только если вывести на max, шрифт становится какой-то искривлённый.

Отредактировано voqabuhe (28-10-2021 14:05:36)

Отсутствует

 

№1601229-10-2021 13:50:34

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 313
UA: Firefox 93.0

Re: Custom Buttons

Dumby
В 94 начал некорректно работать скрипт ucf-mem-indicator (не отображется счетчик)
Можно это поправить?

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

Выделить код

Код:

(async id => ({
	delay: 2e3,
	val: "",
	init(topic, mm) {
		Services.obs.addObserver(mm = this, topic);
		Services.obs.addObserver(function quit(s, t) {
			this.timer?.cancel();
			Services.obs.removeObserver(mm, topic);
			Services.obs.removeObserver(quit, t);
		}, "quit-application-granted");
	},
	observe(win) {
		var df = win.MozXULElement.parseXULToFragment(
			`<hbox id="${id}"><label id="${id += "-label"}"/></hbox>`
		);
		this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
		(this.observe = async win => {
			this.timer.cancel();
			await new Promise(ChromeUtils.idleDispatch);
			win.document.getElementById("star-button-box")
				.after(win.document.importNode(df, true));
			this.notify();
		})(win);
	},
	async notify() {
		var info = await ChromeUtils.requestProcInfo();
		var bytes = info.residentSetSize;
		for(var child of info.children) bytes += child.residentUniqueSize;
		this.timer.initWithCallback(this, this.delay, this.timer.TYPE_ONE_SHOT);

		var prev = this.val;
		if ((this.val = this.mgb(bytes)) != prev)
			for(var win of CustomizableUI.windows)
				win.document.getElementById(id).value = this.val;
	},
	mgb: bytes => bytes < 1073741824
		? Math.round(bytes / 1048576) + "MB"
		: (bytes / 1073741824).toFixed(2) + "GB"
}).init("browser-delayed-startup-finished"))("ucf-mem-indicator");

Отсутствует

 

№1601329-10-2021 14:36:57

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

Re: Custom Buttons

Garalf пишет

Можно это поправить?

Да, вроде поправлял, когда-то

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

Выделить код

Код:

(async id => ({

	delay: 2e3,

	val: "",
	init(topic, mm) {
		Services.obs.addObserver(mm = this, topic);
		Services.obs.addObserver(function quit(s, t) {
			this.timer?.cancel();
			Services.obs.removeObserver(mm, topic);
			Services.obs.removeObserver(quit, t);
		}, "quit-application-granted");
	},
	observe(win) {
		var df = win.MozXULElement.parseXULToFragment(
			`<hbox id="${id}" align="center"><label id="${id += "-label"}"/></hbox>`
		);
		this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);

		// 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")
		));

		(this.observe = async win => {
			this.timer.cancel();
			await new Promise(ChromeUtils.idleDispatch);
			var ind = win.document.importNode(df, true);
			win.document.getElementById("star-button-box").after(ind);
			this.notify();
		})(win);
	},
	async notify() {
		var info = await ChromeUtils.requestProcInfo();
		var bytes = info.memory;
		for(var child of info.children) bytes += child.memory;
		this.timer.initWithCallback(this, this.delay, this.timer.TYPE_ONE_SHOT);

		var prev = this.val;
		if ((this.val = this.mgb(bytes)) != prev)
			for(var win of CustomizableUI.windows) {
				var lab = win.document.getElementById(id);
				if (lab) lab.value = this.val;
			}
	},
	mgb: bytes => bytes < 1073741824
		? Math.round(bytes / 1048576) + "MB"
		: (bytes / 1073741824).toFixed(2) + "GB"
}).init("browser-delayed-startup-finished"))("ucf-mem-indicator");

Отсутствует

 

№1601429-10-2021 19:53:55

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 313
UA: Firefox 94.0

Re: Custom Buttons

Dumby
Спасибо. Как всегда, все ОК.

Отсутствует

 

№1601530-10-2021 02:27:48

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

Re: Custom Buttons

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

надо в этот UCF-скрипт добавить возможность регулировать яркость вращением колёсика над Звёздочкой:

Выделить код

Код:

(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"))
					this.events.push("bookmark-moved");
				else
					this.QueryInterface = g.ChromeUtils.generateQI([Ci.nsINavBookmarkObserver]),
					bm.addObserver(this);
				pobs.addListener(this.events, this.added = events => {
					for(var e of events) e.isTagging || this[e.constructor.name](e);
				});
				obs.addObserver(this, "quit-application-granted");
				this.args = [b => this.bguids.add(b.parentGuid), {concurrent: true}];
				var guid = prefs.getStringPref(this.pref, "");
				if (!guid) try {var [guid] = await PlacesUtils.metadata.get(
					PlacesUIUtils.LAST_USED_FOLDERS_META_KEY, []
				)} catch {}
				this.guids.push(guid || await PlacesUIUtils.defaultParentGuid || bm.unfiledGuid);
			},
			observe() {
				this.pbm || bm.removeObserver(this);
				pobs.removeListener(this.events, this.added);
				obs.removeObserver(this, "quit-application-granted");
				prefs.setStringPref(this.pref, this.guids[0]);
			},
			bguids: new g.Set(), guids: new g.Array(),
			skipTags: true,
			tt(win) {
				var list = win.InspectorUtils
					.getChildrenForNode(win.document.documentElement, true);
				return list.item(list.length - 1);
			},
			PlacesBookmarkAddition(e) {
				if (e.itemType == bm.TYPE_BOOKMARK && e.source == bm.SOURCES.DEFAULT)
					this.guids[0] = e.parentGuid;
			},
			PlacesBookmarkMoved(e) {
				e.parentGuid != e.oldParentGuid && this.PlacesBookmarkAddition(e);
			},
			onItemMoved(a, b, c, d, e, itemType, f, oldParentGuid, parentGuid, source) {
				this.PlacesBookmarkMoved({itemType, source, oldParentGuid, parentGuid});
			},
			fetch(win) {
				this.bguids.clear();
				return bm.fetch({url: win.gBrowser.currentURI.spec}, ...this.args);
			},
			addTab: function(win, url, add, params = {relatedToCurrent: true}) { // открыть адрес [add: в новой вкладке]
				params.triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
				return (add) ? win.gBrowser.addTab(url, params) : win.gBrowser.loadURI(url, params);
			},
			translate(browserMM, win, e, go) { // Google-перевод сайта | выделенного текста (go) поиск выдел. текста в Яндекс
				browserMM.addMessageListener('getSelect', function listener(msg) {
					var url = (msg.data) ? (go)
						? "https://yandex.ru/search/?text="+ msg.data +"&src=suggest_Pers&lang=ru" // поиск текста в Яндекс
						: "https://translate.google.com/#view=home&op=translate&sl=auto&tl=ru&text="+ msg.data // Гугл перевод
						: "http://translate.google.com/translate?u="+ gURLBar.value +"&hl=ru&ie=UTF-8&sl=auto&tl=ru"; // Перевод сайта
					if (go && !msg.data) // Перевод сайти в Яндекс. ничего не выделено + go не пуст
						gBrowser.selectedTab = e.addTab(win, "https://translate.yandex.com/translate?url=" + gURLBar.value + "&dir=&ui=ru&lang=auto-ru", 1)
					else
						gBrowser.selectedTab = e.addTab(win, url, 1);
				browserMM.removeMessageListener('getSelect', listener, true);
				});
				browserMM.loadFrameScript('data:,sendAsyncMessage("getSelect", content.document.getSelection().toString())', false);
			},
			auxclick(e) {	if (e.button == 0) return; var win = e.view;
				if (e.button == 2) {
					if (e.altKey)
						this.translate(gBrowser.selectedBrowser.messageManager, win, this)
					else if (e.shiftKey)
						this.translate(gBrowser.selectedBrowser.messageManager, win, this, 1)
					else
						win.undoCloseTab();
				} else
					this.addTab(win, "about:newtab");
			},
			find: obj => obj.name == "tooltiptext"
		};
		var ps = ["onBeginUpdateBatch", "onEndUpdateBatch", "onItemChanged", "onItemVisited"];
		var noop = () => {}; for(var p of ps) stt[p] = noop; stt.init();

		var func = id => this[id].mouseenter = async function(e) {
			var win = e.view, star = e.target, result = [], starred = star.hasAttribute("starred"); // star.tooltipText = "\u3164"; // лишнее
			starred && await this.fetch(win);
			for(var guid of (starred ? this.bguids : this.guids)) {
				var arr = [], num = 50;
				while(--num) {
					if (!star.matches(":hover")) return;
					var res = await this.bm.fetch(guid);
					if (!res) break;
					if ((guid = res.parentGuid) == this.bm.rootGuid) {
						arr.unshift(this.bm.getLocalizedTitle(res));
						break;
					}
					arr.unshift(res.title || "[Безымянная папка]");
				}
				arr.length && result.push(arr.join("\\"));
			}
			if (!star.matches(":hover")) return;

			var text = (await win.document.l10n.formatMessages([{
				id: star.getAttribute("data-l10n-id"),
				args: JSON.parse(star.getAttribute("data-l10n-args"))
			}]))[0].attributes.find(this.find).value, txt;

			if (result.length) {
				txt = result.join("\n");
				txt = starred ? `\n\n★ ${result.length > 1 ? "Данные закладки добавлены" : "Данная закладка добавлена"} в:\n${txt}` : "\n\n★ Недавно добавленная папка:\n" + txt; // text += this.help_star +'\n'+ txt;
			}
			win.document.tooltipNode == star ? this.tt(win).label = text + this.help_star + txt : star.tooltipText = text + this.help_star + txt;
		}
		var url = "data:;charset=utf-8," + encodeURIComponent(`(${func})("${id}")`);
		g.ChromeUtils.compileScript(url).then(ps => ps.executeInGlobal(g));
	}
	await delayedStartupPromise;
	var stars = Array.from(document.querySelectorAll(sel));
	for(var star of stars)
		star.addEventListener("auxclick", stt), star.addEventListener("mouseenter", stt);
	star.setAttribute("context", "event.stopPropagation()");

	var destructor = () => {
		for(var star of stars)
			star.removeEventListener("auxclick", stt), star.removeEventListener("mouseenter", stt);
	}
	var ucf = window.ucf_custom_script_win || window.ucf_custom_script_all_win;
	if (ucf)
		ucf[id] = {destructor}, ucf.unloadlisteners.push(id);
	else
		window.addEventListener("unload", destructor, {once: true});
})("ucfBookmarksStarFTooltipHelper", "#star-button, #context-bookmarkpage");

скрипт изменения яркости:

Выделить код

Код:

(async pref => CustomizableUI.createWidget(({
	label: "Изменить уровень яркости страницы",
	tooltiptext: "Колесико мыши меняет яркость страницы,\nCредний клик: полная яркость",
	id: "ucf-tabbrowser-tabpanels-opacity-changer",
	localized: false,
	get pref() {
		return Services.prefs.getIntPref(pref, 100);
	},
	onCreated(btn) {
		var txt = this.tooltiptext;
		var click = () => Services.prompt.alert(null, this.label, txt);

		var setPref = (e, val = 100) => {
			Services.prefs.setIntPref(pref, val);
			e.target.toggleAttribute("rst");
		}
		var auxclick = e => e.button != 1 || setPref(e);
		var wheel = e => {
			var val = this.pref + (e.deltaY < 0 ? 1 : -1);
			val < 0 || val > 100 || setPref(e, val);
		}
		(this.onCreated = btn => {
			btn.onwheel = wheel;
			btn._handleClick = click;
			btn.onauxclick = auxclick;
			btn.style.setProperty("list-style-image", `url("chrome://user_chrome_files/content/vertical_top_bottom_bar/svg/restart-app-16.svg")`, "important");
		})(btn);
	},
	init() {
		var css = [
			"@-moz-document url(chrome://browser/content/browser.xhtml) {",
			"\t#${this.id}[rst] {filter: grayscale(1%) !important;}",
			"\t:root:not([chromehidden*=toolbar]) #tabbrowser-tabbox {background-color: black !important;}",
			`\t:root:not([chromehidden*=toolbar]) #tabbrowser-tabpanels {opacity: ${this.pref / 100} !important;}`, "}"
		].join("\n");
		var url = `resource://${this.id}/`;
		Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler)
			.setSubstitution(this.id, Services.io.newURI("data:text/css," + encodeURIComponent(css)));
		var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
		sss.loadAndRegisterSheet(Services.io.newURI(url), sss.USER_SHEET);

		var st = InspectorUtils.getAllStyleSheets((
			Services.appShell.hiddenDOMWindow ||
			Services.wm.getEnumerator(null).getNext()
		).document).find(s => s.href == url).cssRules[0].cssRules[2].style;

		var obs = () => st.setProperty("opacity", this.pref / 100, "important");
		Services.prefs.addObserver(pref, obs);
		Services.obs.addObserver(function quit(s, topic) {
			Services.obs.removeObserver(quit, topic);
			Services.prefs.removeObserver(pref, obs);
		}, "quit-application-granted");
		return this;
	}
}).init()))("ucf.tabbrowser-tabpanels.opacity");

Отсутствует

 

№1601630-10-2021 17:14:09

VORON
Участник
 
Группа: Members
Зарегистрирован: 03-04-2013
Сообщений: 153
UA: Firefox 91.0

Re: Custom Buttons

Dumby
Можно под 91-ю починить кнопку ?
Она вродеработает, но нет цветового переключения на самой кнопке

Отсутствует

 

№1601730-10-2021 20:15:30

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

Re: Custom Buttons

Dobrov пишет

помоги объединить

Хорошо, попробую вписать, раз самому сложно

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

Выделить код

Код:

(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"))
					this.events.push("bookmark-moved");
				else
					this.QueryInterface = g.ChromeUtils.generateQI([Ci.nsINavBookmarkObserver]),
					bm.addObserver(this);
				pobs.addListener(this.events, this.added = events => {
					for(var e of events) e.isTagging || this[e.constructor.name](e);
				});
				obs.addObserver(this, "quit-application-granted");
				this.args = [b => this.bguids.add(b.parentGuid), {concurrent: true}];
				var guid = prefs.getStringPref(this.pref, "");
				if (!guid) try {var [guid] = await PlacesUtils.metadata.get(
					PlacesUIUtils.LAST_USED_FOLDERS_META_KEY, []
				)} catch {}
				this.guids.push(guid || await PlacesUIUtils.defaultParentGuid || bm.unfiledGuid);


				var pref = "ucf.tabbrowser-tabpanels.opacity";
				var getPref = () => Services.prefs.getIntPref(pref, 100);
				var css = [
					"@-moz-document url(chrome://browser/content/browser.xhtml) {",
					`\t:is(${sel})[rst] {filter: grayscale(1%) !important;}`,
					"\t:root:not([chromehidden*=toolbar]) #tabbrowser-tabbox {background-color: black !important;}",
					`\t:root:not([chromehidden*=toolbar]) #tabbrowser-tabpanels {opacity: ${getPref() / 100} !important;}`, "}"
				].join("\n");
				var subst = "ucf-tabbrowser-tabpanels-opacity-style", url = `resource://${subst}/`;
				Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler)
					.setSubstitution(subst, Services.io.newURI("data:text/css," + encodeURIComponent(css)));
				var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
				sss.loadAndRegisterSheet(Services.io.newURI(url), sss.USER_SHEET);

				var st = InspectorUtils.getAllStyleSheets(document)
					.find(s => s.href == url).cssRules[0].cssRules[2].style;

				this.setPref = (e, val = 100) => {
					Services.prefs.setIntPref(pref, val);
					e.target.toggleAttribute("rst");
				}
				this.wheel = e => {
					var val = getPref() + (e.deltaY < 0 ? 1 : -1);
					val < 0 || val > 100 || this.setPref(e, val);
				}
				var observer = () => st.setProperty("opacity", getPref() / 100, "important");
				Services.prefs.addObserver(pref, observer);
				this.removePrefObs = () => Services.prefs.removeObserver(pref, observer);
			},
			observe() {
				this.pbm || bm.removeObserver(this);
				pobs.removeListener(this.events, this.added);
				obs.removeObserver(this, "quit-application-granted");
				prefs.setStringPref(this.pref, this.guids[0]);

				this.removePrefObs();
			},
			bguids: new g.Set(), guids: new g.Array(),
			skipTags: true,
			tt(win) {
				var list = win.InspectorUtils
					.getChildrenForNode(win.document.documentElement, true);
				return list.item(list.length - 1);
			},
			PlacesBookmarkAddition(e) {
				if (e.itemType == bm.TYPE_BOOKMARK && e.source == bm.SOURCES.DEFAULT)
					this.guids[0] = e.parentGuid;
			},
			PlacesBookmarkMoved(e) {
				e.parentGuid != e.oldParentGuid && this.PlacesBookmarkAddition(e);
			},
			onItemMoved(a, b, c, d, e, itemType, f, oldParentGuid, parentGuid, source) {
				this.PlacesBookmarkMoved({itemType, source, oldParentGuid, parentGuid});
			},
			fetch(win) {
				this.bguids.clear();
				return bm.fetch({url: win.gBrowser.currentURI.spec}, ...this.args);
			},
			addTab: function(win, url, add, params = {relatedToCurrent: true}) { // открыть адрес [add: в новой вкладке]
				params.triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
				return (add) ? win.gBrowser.addTab(url, params) : win.gBrowser.loadURI(url, params);
			},
			translate(browserMM, win, e, go) { // Google-перевод сайта | выделенного текста (go) поиск выдел. текста в Яндекс
				browserMM.addMessageListener('getSelect', function listener(msg) {
					var url = (msg.data) ? (go)
						? "https://yandex.ru/search/?text="+ msg.data +"&src=suggest_Pers&lang=ru" // поиск текста в Яндекс
						: "https://translate.google.com/#view=home&op=translate&sl=auto&tl=ru&text="+ msg.data // Гугл перевод
						: "http://translate.google.com/translate?u="+ gURLBar.value +"&hl=ru&ie=UTF-8&sl=auto&tl=ru"; // Перевод сайта
					if (go && !msg.data) // Перевод сайти в Яндекс. ничего не выделено + go не пуст
						gBrowser.selectedTab = e.addTab(win, "https://translate.yandex.com/translate?url=" + gURLBar.value + "&dir=&ui=ru&lang=auto-ru", 1)
					else
						gBrowser.selectedTab = e.addTab(win, url, 1);
				browserMM.removeMessageListener('getSelect', listener, true);
				});
				browserMM.loadFrameScript('data:,sendAsyncMessage("getSelect", content.document.getSelection().toString())', false);
			},
			auxclick(e) {
				if (e.button == 2) {
					var win = e.view;
					if (e.altKey)
						this.translate(gBrowser.selectedBrowser.messageManager, win, this);
					else if (e.shiftKey)
						this.translate(gBrowser.selectedBrowser.messageManager, win, this, 1);
					else
						win.undoCloseTab();
				} else
					//this.addTab(win, "about:newtab");
					this.setPref(e);
			},
			find: obj => obj.name == "tooltiptext"
		};
		var ps = ["onBeginUpdateBatch", "onEndUpdateBatch", "onItemChanged", "onItemVisited"];
		var noop = () => {}; for(var p of ps) stt[p] = noop; stt.init();

		var func = id => this[id].mouseenter = async function(e) {
			var win = e.view, star = e.target, result = [], starred = star.hasAttribute("starred"); // star.tooltipText = "\u3164"; // лишнее
			starred && await this.fetch(win);
			for(var guid of (starred ? this.bguids : this.guids)) {
				var arr = [], num = 50;
				while(--num) {
					if (!star.matches(":hover")) return;
					var res = await this.bm.fetch(guid);
					if (!res) break;
					if ((guid = res.parentGuid) == this.bm.rootGuid) {
						arr.unshift(this.bm.getLocalizedTitle(res));
						break;
					}
					arr.unshift(res.title || "[Безымянная папка]");
				}
				arr.length && result.push(arr.join("\\"));
			}
			if (!star.matches(":hover")) return;

			var text = (await win.document.l10n.formatMessages([{
				id: star.getAttribute("data-l10n-id"),
				args: JSON.parse(star.getAttribute("data-l10n-args"))
			}]))[0].attributes.find(this.find).value, txt;

			if (result.length) {
				txt = result.join("\n");
				txt = starred ? `\n\n★ ${result.length > 1 ? "Данные закладки добавлены" : "Данная закладка добавлена"} в:\n${txt}` : "\n\n★ Недавно добавленная папка:\n" + txt; // text += this.help_star +'\n'+ txt;
			}
			win.document.tooltipNode == star ? this.tt(win).label = text + this.help_star + txt : star.tooltipText = text + this.help_star + txt;
		}
		var url = "data:;charset=utf-8," + encodeURIComponent(`(${func})("${id}")`);
		g.ChromeUtils.compileScript(url).then(ps => ps.executeInGlobal(g));
	}
	await delayedStartupPromise;

	var types = ["auxclick", "mouseenter", "wheel"];
	var stars = Array.from(document.querySelectorAll(sel));

	for(var star of stars) for(var type of types) star.addEventListener(type, stt);
	star.setAttribute("context", "event.stopPropagation()");

	var destructor = () => {
		for(var star of stars) for(var type of types) star.removeEventListener(type, stt);
	}
	var ucf = window.ucf_custom_script_win || window.ucf_custom_script_all_win;
	if (ucf)
		ucf[id] = {destructor}, ucf.unloadlisteners.push(id);
	else
		window.addEventListener("unload", destructor, {once: true});
})("ucfBookmarksStarFTooltipHelper", "#star-button, #context-bookmarkpage");

VORON пишет

нет цветового переключения на самой кнопке

Даже не знаю, сейчас лисьи кнопки оформлены иначе, чем в те годы.
Может так сойдёт

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

Выделить код

Код:

(sss => {
	var on = "#131d24";
	var off = "#ffeeaa";

	var pref = `CB.${_id.slice(20)}.setStyleForPage`;
	var url = "data:text/css," + encodeURIComponent(this.Help);
	var args = [Services.io.newURI(url), sss.AGENT_SHEET];
	var reg = add => {
		var has = sss.sheetRegistered(...args);
		if (add) has || sss.loadAndRegisterSheet(...args);
		else has && sss.unregisterSheet(...args);
	}
	var bgs = [off, on].map(c => `linear-gradient(${c}, ${c})`);
	var st = this.icon.style;
	st.cssText = `
		background-repeat: no-repeat !important;
		background-origin: content-box !important;
	`;
	var setState = () => {
		var state = Services.prefs.getBoolPref(pref, false);
		st.setProperty("background-image", bgs[+state], "important");
		reg(state);
	}
	setState();
	this._handleClick = () => Services.prefs.setBoolPref(
		pref, !Services.prefs.getBoolPref(pref, false)
	);
	Services.prefs.addObserver(pref, setState, false);
	addDestructor(reason => {
		Services.prefs.removeObserver(pref, setState);
		reason[5] == "e" && reg();
	});
})(
	Cc["@mozilla.org/content/style-sheet-service;1"]
		.getService(Ci.nsIStyleSheetService)
);

// Подсказка для кнопки .......... 
this.tooltipText = self.label + "\nЛ: Переключить черный фон страниц";

Отсутствует

 

№1601831-10-2021 00:21:42

Sergeys
Administrator
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 23-01-2005
Сообщений: 14008
UA: Firefox 89.0
Веб-сайт

Re: Custom Buttons

для UCF-скриптов есть отдельная тема!
https://forum.mozilla-russia.org/viewtopic.php?id=76642


Через сомнения приходим к истине. Цицерон

Отсутствует

 

№1601931-10-2021 19:13:22

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

Dumby
Что-то  java script не работает, выключить, в смысле.

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

Выделить код

Код:

/*CODE*/
// ВКЛ / ВЫКЛ  js на странице + разрешить выделение
// Результат появляется сразу без перезагрузки.
  
      const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);  
      var uri = makeURI("data:text/css," + encodeURIComponent( "*{ -moz-user-select: text !important;}" ));
// Для текущей вкладки:
       gBrowser.selectedBrowser.messageManager.loadFrameScript(
    "data:,docShell.allowJavascript=!docShell.allowJavascript", false      
  
); 
           
           
                      alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
                      alertsService.showAlertNotification("chrome://global/skin/icons/cpd_OK.png", "Javascript", "ОТКЛ" );
                      setTimeout(()=> alertsService.closeAlert(), 2000);

Отсутствует

 

№1602031-10-2021 20:09:13

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

Re: Custom Buttons

ВВП
var bc = gBrowser.selectedBrowser.browsingContext;
bc.allowJavascript = !bc.allowJavascript;

Отсутствует

 

№1602131-10-2021 22:40:11

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

Dumby
Класс !

Отсутствует

 

№1602201-11-2021 15:00:45

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 356
UA: Firefox 86.0

Re: Custom Buttons

Dumby пишет

Не, 0.0.7.0.0.21 на 91 ставить не следует, там есть косяк несовместимости.

А нет никакого списка кнопок работающих на новых версиях? Переползать помаленьку нужно, только кнопки и держут. Их не так много, но без них не комфортно.

Отсутствует

 

№1602302-11-2021 00:41:36

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

Dumby
В 93 не срабатывает этот код ... Ставлю в ini. В 92 - работает...

скрытый текст
var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
         file.initWithPath(file.path + "\\memory\\der.vbs");
file.launch();

Подставил в батник паузу,вроде, норм...
ping -n 1 -w 4000 192.168.254.254 >nul
Reg.exe delete "HKCU\SOFTWARE\Mozilla\Firefox" /f
Хоть и патченый  фокс , а при открытии адреса снова летит в реестр HKCU\SOFTWARE\Mozilla\Firefox\Launcher , хотя и без значений

Отредактировано ВВП (02-11-2021 10:51:08)

Отсутствует

 

№1602403-11-2021 20:40:59

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

Re: Custom Buttons

Mishania пишет

А нет никакого списка кнопок работающих на новых версиях?

Не знаю. Я о таком не слышал.

Отсутствует

 

№1602505-11-2021 21:24:28

ВВП
Участник
 
Группа: Members
Зарегистрирован: 13-03-2021
Сообщений: 332
UA: Firefox 93.0

Re: Custom Buttons

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

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

Выделить код

Код:

(async id => ({

	delay: 2e3,

	get limit() {
		var mb = 950 * 950;
		delete this.limit;
		return this.limit = this.notMulti
			? 900 * mb // not multiprocess, 900MB
			: 1.1 * 950 * mb; // multiprocess, 1.1GB
	},
	xul: `
		<hbox
			id="${id}"
			value="ram"
			tooltiptext="ЛКМ: Очистить Память"
		>
			<label id="${id += "-label"}"/>
		</hbox>
	`,
	css: `
		min-height: 26px !important;
		height: 26px !important;
		border-radius: 3px !important;
		padding: 0px 5px 0px !important;
		color: #00ffff !important;
                font-size: 15px !important;
		margin: 0px  1px  1px 3px !important;
		
                font-weight: 400 !important;
                font-family: segoe ui !important;
		
		background: linear-gradient(rgb(72, 85, 108),rgb(20, 25, 34)) !important;
	`,
	launch() {
		var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
		["memory", "start.vbs"].forEach(file.append);
		(this.launch = file.launch)();
	},
	val: "",
	init(topic, mm) {
		Services.obs.addObserver(mm = this, topic);
		Services.obs.addObserver(function quit(s, t) {
			this.timer?.cancel();
			Services.obs.removeObserver(mm, topic);
			Services.obs.removeObserver(quit, t);
		}, "quit-application-granted");
	},
	observe(win) {
		var df = win.MozXULElement.parseXULToFragment(this.xul);
		this.click = e => e.button || this.launch();
		this.notMulti = !Services.appinfo.browserTabsRemoteAutostart;
		this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);

		(this.observe = async win => {
			this.timer.cancel();
			await new Promise(win.requestAnimationFrame);
			var clone = win.document.importNode(df, true);
			var hbox = clone.firstChild;
			win.document.getElementById("page-action-buttons").append(clone);
			hbox.onclick = this.click;
			hbox.style.cssText = this.css;
			hbox.firstChild.style.setProperty("margin", "0", "important");
			this.notify();
		})(win);
	},
	async notify() {
		var info = await ChromeUtils.requestProcInfo();
		var bytes = info.memory;
		for(var child of info.children) bytes += child.memory;
		this.timer.initWithCallback(this, this.delay, this.timer.TYPE_ONE_SHOT);

		var prev = this.val;
		if ((this.val = this.mgb(bytes)) != prev)
			for(var win of CustomizableUI.windows) {
				var lab = win.document.getElementById(id);
				if (lab) lab.value = this.val;
			}
	},
	mgb: bytes => bytes < 1073741824
		? String(Math.round(bytes / 1048576))
		: (bytes / 1073741824).toFixed(2)
}).init("browser-delayed-startup-finished"))("ucf-mem-indicator");

Кстати, а никак старую кнопку к мультирежиму прикрутить ? Она как раз работает , ну и стили из справки по уму (перенести в INI)

Выделить код

Код:

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%3Eram%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/jpeg%3Bbase64%2C%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0A%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A//%20Memory%20Monitor%20................................%0A//%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D52237%0A//%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20idbut%3Dthis.id%3B%0Avar%20urlbar%20%3D%20document.getElementById%28%22page-action-buttons%22%29%3B%0Avar%20button%20%3D%20document.getElementById%28idbut%29%3B%0Aurlbar.insertBefore%28button%2C%20urlbar.Child%29%3B%0A%0Avar%20style%20%3D%20custombutton.buttonGetHelp%28self%29.replace%28/id/g%2C%20_id%29%3B%0Avar%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28style%29%29%3B%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%200%29%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041F%u0440%u0438%u043D%u0443%u0434%u0438%u0442%u0435%u043B%u044C%u043D%u0430%u044F%20%u043E%u0447%u0438%u0441%u0442%u043A%u0430%20%u043F%u0430%u043C%u044F%u0442%u0438%22%3B%20%20%20%20%20%20%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20this.oncontextmenu%20%3D%20function%28event%29%20%7B%0A%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28event.button%20%3D%3D%200%29%20%7B%20%0A%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20var%20file%20%3D%20Services.dirsvc.get%28%27ProfD%27%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20file.initWithPath%28file.path%20+%20%22%5C%5Cmemory%5C%5Cstart.vbs%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20file.launch%28%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%0A%7D%3B%0Athis.oncontextmenu%20%3De%3D%3E%20%7B%20e.button%20%26%26%20%21e.ctrlKey%20%26%26%20e.preventDefault%28%29%20%7D%3B%0A%20%20%20%20%20%20%20%20%0A//%20%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043F%u043E%u0442%u0440%u0435%u0431%u043B%u0435%u043D%u0438%u0435%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u043D%u0430%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u0435%0A%28function%20%28%29%20%7B%20%0Aself.timer%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20memory%20%3D%20getMemory%28%29%3B%0A%20%20%20%20%20%20self.label%20%3D%20getMemory%28%29%0A%20%20%20%20%20%20if%20%28%20memory%20%3E%20140%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20file%20%3D%20Services.dirsvc.get%28%27ProfD%27%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20%20%20%20%20file.initWithPath%28file.path%20+%20%22%5C%5Cmemory%5C%5Cstart.vbs%22%29%3B%20%0A%20%20%20%20%20%20%20%20%20file.launch%28%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%7D%2C%202000%20%29%3B%20%20%20%20%20%0A%20%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u0441%u044E%20%u0437%u0430%u043D%u0438%u043C%u0430%u0435%u043C%u0443%u044E%20%u043E%u043F%u0435%u0440%u0430%u0442%u0438%u0432%u043D%u0443%u044E%20%u043F%u0430%u043C%u044F%u0442%u044C%20%u0432%20MB%20....%0A%20%20%20function%20getMemory%28%29%20%7B%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20reporterManager%20%3D%20Cc%5B%22@mozilla.org/memory-reporter-manager%3B1%22%5D.getService%28Ci.nsIMemoryReporterManager%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20e%20%3D%20reporterManager.enumerateReporters%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28%20e.hasMoreElements%28%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mr%20%3D%20e.getNext%28%29.QueryInterface%28Ci.nsIMemoryReporter%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self%5Bmr.path%5D%20%3D%20mr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20memory%20%3D%20self%5B%22resident%22%5D.amount%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20catch%28e%29%20%7B%20var%20memory%20%3D%20reporterManager.resident%3B%20%7D%20//%20FF26%20-%20Nightly%0A%20%20%20%20%20%0A%20%20%20%20%20%20return%20%28%20Math.round%28%20memory/1048576%20%29%20%29%3B%0A%20%20%20%7D%3B%20%20%20%20%20%0A%0A//%20%u0421%u0442%u0438%u043B%u044C%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u043A%u043D%u043E%u043F%u043A%u0443%20....%0A%20%20%20var%20uri%20%3D%20makeURI%28%27data%3Atext/css%2C%27+%20encodeURIComponent%28%27%5C%0A%20%20%20%25button%25%20.toolbarbutton-icon%20%7B%5C%0A%20%20%20%20%20display%3A%20none%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20.toolbarbutton-text%20%7B%5C%0A%20%20%20%20%20display%3A%20-moz-box%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%25button%25%20%7B%5C%0A%20%20%20%20%20-moz-box-orient%3A%20horizontal%20%21important%3B%5C%0A%20%20%20%7D%5C%0A%20%20%20%27.replace%28/%25button%25/g%2C%20%22%23%22%20+%20_id%29%20%29%29%3B%0A%20%20%20const%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0A%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%0A//%20%u0423%u0434%u0430%u043B%u044F%u0442%u044C%20%u0441%u0447%u0451%u0442%u0447%u0438%u043A%20%u043F%u0430%u043C%u044F%u0442%u0438%20%u0438%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%20....%0A%20%20addDestructor%28function%28%29%20%7B%0A%20%20%20%20%20%20try%20%7B%20window.clearTimeout%28%20self.timer%20%29%20%7D%20catch%28e%29%20%7B%7D%3B%0A%20%20%20%7D%29%3B%0A%7D%29%28%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%23id%20.toolbarbutton-text%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20min-height%3A%2026px%20%21important%3B%0A%09%09height%3A%2026px%20%21important%3B%0A%09%09border-radius%3A%203px%20%21important%3B%0A%09%09padding%3A%200px%205px%200px%20%21important%3B%0A%09%09font-family%3A%20segoe%20ui%20%21important%3B%0A%09%09color%3A%20%2300ffff%20%21important%3B%0A%09%09font-size%3A%2015px%20%21important%3B%0A%09%09margin-bottom%3A%202px%20%21important%3B%0A%09%09margin-right%3A%201px%20%21important%3B%0A%09%09margin-left%3A%203px%20%21important%3B%0A%09%09background%3A%20linear-gradient%28rgb%2872%2C%2085%2C%20108%29%2Crgb%2820%2C%2025%2C%2034%29%29%20%21important%3B%0A%20%20%20%20%20%0A%7D%0A%0A%23id%20.toolbarbutton-icon%20%7B%0A%20%20display%3A%20none%20%21important%3B%0A%7D%20%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано ВВП (06-11-2021 13:35:55)

Отсутствует

 

Board footer

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