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

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

№10123-04-2020 00:04:50

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 162
UA: Firefox 75.0

Re: [CB]Toggle Restartless Add-ons

voqabuhe пишет

egorsemenov06
В папке  chrome создать файл Extension Options Menu.uc.js. и в него вписать. На 75 [firefox] работает.

и что нигде его подключать не надо?

Отсутствует

 

№10223-04-2020 00:08:49

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

Re: [CB]Toggle Restartless Add-ons

egorsemenov06
Я дополнил предыдущее сообщение.

Отсутствует

 

№10323-04-2020 00:36:58

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 162
UA: Firefox 75.0

Re: [CB]Toggle Restartless Add-ons

voqabuhe пишет

egorsemenov06
Я дополнил предыдущее сообщение.

Спасибо получилось

Отсутствует

 

№10423-04-2020 22:34:06

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

Re: [CB]Toggle Restartless Add-ons

Секция на замену:

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

Выделить код

Код:

style: `
      @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
      .restartless label:after { content:"☑"; }
      .enabling label:after { content:"☑" !important; }
      .disabling label:after { content:"☐" !important; }
      .uninstalling label:after { content: '!' !important; }
      .noOptions label { font-style: italic; color: silver; }
      .disabled label { color: gray; font-style: italic; }
	  .disabled label:after { content:"☐" !important; }
    `,

Или так:
скрытый текст

Выделить код

Код:

style: `
      @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
      .restartless label:after { content:"☑"; }
      .enabling label:after { content:"☑" !important; }
      .disabling label:after { content:"☐" !important; }
      .uninstalling label:after { content: '!' !important; }
      .noOptions label { font-style: italic; color: gray }
      .disabled label { color: orange; font-style: italic; }
	  .disabled label:after { content:"☐" !important; }
    `,

Или так. Так себе оставил:
скрытый текст

Выделить код

Код:

style: `
      @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
      .restartless label:after { font-size: 18px; content:"☑"; }
      .enabling label:after { content:"☑" !important; }
      .disabling label:after { content:"☐" !important; }
      .uninstalling label:after { content: '!' !important; }
      .noOptions label { color: gray; }
      .disabled label { color: orange; font-style: italic; }
	  .disabled label:after { content:"☐" !important; }
    `,

В общем, принцип должен быть понятен.
   
Ну и это можно:

Выделить код

Код:

mi.setAttribute('tooltiptext', addon.description + '\nID : ' + addon.id + '\n\nЛКМ            :  Настройки\nПКМ            :  Откл. / Включить\nСКМ            :  Домашняя страница\nCtrl + ЛКМ :  Открыть архив\nCtrl + ПКМ :  Деинсталлировать\nCtrl + СКМ :  Копировать ID');

Размер удален, так как все равно не работает. В общей теме есть замена, но она не реальный, а распакованный размер показывает.

Отредактировано _zt (23-04-2020 23:48:30)

Отсутствует

 

№10524-04-2020 23:18:29

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4325
UA: Firefox 56.0

Re: [CB]Toggle Restartless Add-ons

egorsemenov06 пишет

Увы но не запустилась

Поставил. Вот так, вроде, работает (по-прежнему надо дописать код инициализации и задать иконку):

Выделить код

Код:

(function () { // Toggle Restartless Add-ons button
// Custom Buttons-like environment
var event = {};
var _phase = "init";
var window, document, XULElement, setTimeout, clearTimeout;
var AddonManager;

var id = "__cb_toggleRestartlessAddons";

CustomizableUI.createWidget({
	id: id,
	type: "custom",
	defaultArea: CustomizableUI.AREA_NAVBAR,
	onBuild: function(doc) {
		var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
		var btn = doc.createElementNS(XUL_NS, "toolbarbutton");
		var attrs = {
			id: id,
			class: "toolbarbutton-1 chromeclass-toolbar-additional",
			label: "Toggle Restartless Add-ons",
			tooltiptext: "Toggle Restartless Add-ons",
			style: 'list-style-image: url("chrome://branding/content/icon16.png");', // Set icon here
			__proto__: null
		};
		for(var p in attrs)
			btn.setAttribute(p, attrs[p]);
		var win = doc.defaultView;
		win.setTimeout(function() {
			window = win;
			document = win.document;
			XULElement = win.XULElement;
			setTimeout = win.setTimeout;
			clearTimeout = win.clearTimeout;
			AddonManager = win.AddonManager;

			toggleRestartlessAddons.call(btn);
		}, 0);
		return btn;
	}
});

function toggleRestartlessAddons() {
	// Code from https://github.com/Infocatcher/Custom_Buttons/blob/master/Toggle_Restartless_Add-ons/toggleRestartlessAddons.js

}

})();

Добавлено 24-04-2020 23:21:03
Но есть ограничение: если открыть больше одного окна, то будет пытаться работать с последним открытым.

Добавлено 24-04-2020 23:35:04
А вот так должно уже работать и в нескольких окнах, не вполне оптимально, но Custom Buttons работает аналогично:

Выделить код

Код:

(function () { // Toggle Restartless Add-ons button
var id = "__cb_toggleRestartlessAddons";

CustomizableUI.createWidget({
	id: id,
	type: "custom",
	defaultArea: CustomizableUI.AREA_NAVBAR,
	onBuild: function(doc) {
		var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
		var btn = doc.createElementNS(XUL_NS, "toolbarbutton");
		var attrs = {
			id: id,
			class: "toolbarbutton-1 chromeclass-toolbar-additional",
			label: "Toggle Restartless Add-ons",
			tooltiptext: "Toggle Restartless Add-ons",
			style: 'list-style-image: url("chrome://branding/content/icon16.png");', // Set icon here
			__proto__: null
		};
		for(var p in attrs)
			btn.setAttribute(p, attrs[p]);
		var win = doc.defaultView;
		win.setTimeout(function() {
			new win.Function(
				"("
				+ toggleRestartlessAddons.toString()
					.replace("{", '{\n\tvar event = {}, _phase = "init";')
				+ ").call(document.getElementById('" + id + "'));"
			)();
		}, 0);
		return btn;
	}
});

function toggleRestartlessAddons() {
	// Code from https://github.com/Infocatcher/Custom_Buttons/blob/master/Toggle_Restartless_Add-ons/toggleRestartlessAddons.js

}

})();

Отредактировано Infocatcher (24-04-2020 23:35:04)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№10624-04-2020 23:56:01

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 162
UA: Firefox 75.0

Re: [CB]Toggle Restartless Add-ons

Infocatcher пишет
egorsemenov06 пишет

Увы но не запустилась

Поставил. Вот так, вроде, работает (по-прежнему надо дописать код инициализации и задать иконку):

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

Отсутствует

 

№10714-07-2020 01:27:53

JKT
Участник
 
Группа: Members
Зарегистрирован: 14-01-2016
Сообщений: 67
UA: Firefox 78.0

Re: [CB]Toggle Restartless Add-ons

Уважаемые, так где собственно взять готовый окончательный на сегодня вариант, работающий на FF-78? Ну чтоб без «к тому добавить», «там убрать». Читаю посты и уже запутался.
UPD
Вопрос снят. №98  Вроде работает :)

Отредактировано JKT (14-07-2020 03:23:59)

Отсутствует

 

№10814-07-2020 14:02:12

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

Re: [CB]Toggle Restartless Add-ons

JKT
В FF 78 работает!


Add, или такой вариант для -> user_chrome_files/custom_script.js: https://forum.mozilla-russia.org/viewto … 12#p780412

Отредактировано kokoss (14-07-2020 14:10:01)

Отсутствует

 

№10929-07-2020 12:54:14

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

Re: [CB]Toggle Restartless Add-ons

У меня в 79 перестало работать обновление расширений по правому клику, просто крутится кольцо...

Отсутствует

 

№11029-07-2020 14:50:39

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

Re: [CB]Toggle Restartless Add-ons

Garalf
Вы однако темы попутали, вам похоже нужно в  [CB]Check for Addons Updates.
Но Check for Addons Updates в [firefox] 79 у меня работает, если чё.

Отсутствует

 

№11129-07-2020 21:13:41

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

Re: [CB]Toggle Restartless Add-ons

voqabuhe
А вы не в курсе, что по правому клику на кнопке производится проверка обновлений расширений?

Отредактировано Garalf (29-07-2020 21:14:12)

Отсутствует

 

№11229-07-2020 23:43:51

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

Re: [CB]Toggle Restartless Add-ons

Garalf
У меня не производится. Как я понял, это не основная версия кнопки, а фишка которую Infocatcher  добавил по заказу.

Отсутствует

 

№11330-07-2020 10:47:35

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

Re: [CB]Toggle Restartless Add-ons

Разобрался. Все работает!

Отсутствует

 

№11402-10-2020 10:37:36

KOMMEHTATOP
Участник
 
Группа: Members
Зарегистрирован: 13-10-2015
Сообщений: 45
UA: Firefox 78.0

Re: [CB]Toggle Restartless Add-ons

Mozilla Firefox 78.3.1esr 

Toggle Restartless Add-ons

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

Выделить код

Код:

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%u0410%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043F%u0435%u0440%u0435%u0437%u0430%u0433%u0440%u0443%u0436%u0430%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bhttps%3A//raw.githubusercontent.com/Infocatcher/Custom_Buttons/master/Toggle_Restartless_Add-ons/icon.png%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20http%3A//infocatcher.ucoz.net/js/cb/toggleRestartlessAddons.js%0A//%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D57948%0A//%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/Toggle_Restartless_Add-ons%0A%0A//%20Toggle%20Restartless%20Add-ons%20button%20for%20Custom%20Buttons%0A//%20%28code%20for%20%22initialization%22%20section%29%0A//%20Also%20the%20code%20can%20be%20used%20from%20main%20window%20context%20%28as%20Mouse%20Gestures%20code%2C%20for%20example%29%0A%0A//%20Also%20you%20can%20check%20for%20add-ons%20updates%20using%20right-click%3A%0A//%20copy%20all%20code%20from%0A//%20https%3A//github.com/Infocatcher/Custom_Buttons/blob/master/Check_for_Addons_Updates/checkForAddonsUpdates.js%0A//%20after%20%22//%3D%3D%20Check%20for%20Addons%20Updates%20begin%22%0A%0A//%20See%20%22var%20style%20%3D%20%22%20to%20modify%20styles%20for%20specific%20add-ons%0A%0A//%20%28c%29%20Infocatcher%202013-2019%0A//%20version%200.1.3pre4%20-%202020-01-01%0A%0Avar%20options%20%3D%20%7B%0A%09addonTypes%3A%20%5B%22extension%22%2C%20%22plugin%22%5D%2C%0A%09//%20Possible%20values%3A%20%22extension%22%2C%20%22plugin%22%0A%09//%20From%20extensions%3A%20%22userstyle%22%20%28Stylish%29%2C%20%22greasemonkey-user-script%22%20%28Greasemonkey%29%2C%20%22userscript%22%20%28Scriptish%29%0A%09//%20%28swap%20to%20reorder%20in%20the%20menu%29%0A%09showVersions%3A%200%2C%0A%09//%200%20-%20don%27t%20show%20versions%0A%09//%201%20-%20show%20after%20name%3A%20%22Addon%20Name%201.2%22%0A%09//%202%20-%20show%20as%20%22acceltext%22%20%28in%20place%20for%20hotkey%20text%29%0A%09showHidden%3A%201%2C%0A%09//%200%20%20-%20don%27t%20show%20hidden%20add-ons%0A%09//%20-1%20-%20show%20only%20enabled%20hidden%20add-ons%20%28e.g.%20to%20track%20new%20items%29%0A%09//%201%20%20-%20show%20all%20hidden%20add-ons%0A%09sort%3A%20%7B%0A%09%09enabled%3A%20%20%20%20%200%2C%0A%09%09clickToPlay%3A%200%2C%0A%09%09disabled%3A%20%20%20%200%0A%09%09//%20Sort%20order%3A%0A%09%09//%200%2C%200%2C%200%20-%20sort%20add-ons%20of%20each%20type%20alphabetically%0A%09%09//%200%2C%200%2C%201%20-%20show%20enabled%20add-ons%20%28of%20each%20type%29%20first%0A%09%09//%200%2C%201%2C%202%20-%20enabled%20add-ons%2C%20then%20click-to-play%20and%20then%20disabled%0A%09%7D%2C%0A%09closeMenu%3A%20false%2C%20//%20Close%20menu%20after%20left-click%0A%09closeMenuClickToPlay%3A%20false%20//%20Close%20menu%20after%20left-click%2C%20for%20click%20to%20play%20plugins%0A%09//%20Use%20Shift+click%20to%20invert%20closeMenu*%20behavior%0A%7D%3B%0A%0Avar%20xulns%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0Avar%20mp%20%3D%20document.createElementNS%28xulns%2C%20%22menupopup%22%29%3B%0Amp.setAttribute%28%22onpopupshowing%22%2C%20%22this.updateMenu%28%29%3B%22%29%3B%0Amp.setAttribute%28%22oncommand%22%2C%20%22this.handleEvent%28event%29%3B%22%29%3B%0Amp.setAttribute%28%22onmousedown%22%2C%20%22if%28event.button%20%3D%3D%200%29%20this.handleEvent%28event%29%3B%22%29%3B%0Amp.setAttribute%28%22onclick%22%2C%20%22if%28event.button%20%3E%200%29%20this.handleEvent%28event%29%3B%22%29%3B%0Amp.setAttribute%28%22oncontextmenu%22%2C%20%22return%20false%3B%22%29%3B%0Amp.setAttribute%28%22onpopuphidden%22%2C%20%22this.destroyMenu%28%29%3B%22%29%3B%0A%0Avar%20tb%20%3D%20this.parentNode%3B%0Aif%28tb%20%26%26%20tb.getAttribute%28%22orient%22%29%20%3D%3D%20%22vertical%22%29%20%7B%0A%09//%20https%3A//addons.mozilla.org/firefox/addon/vertical-toolbar/%0A%09var%20isRight%20%3D%20tb.parentNode.getAttribute%28%22placement%22%29%20%3D%3D%20%22right%22%3B%0A%09mp.setAttribute%28%22position%22%2C%20isRight%20%3F%20%22start_before%22%20%3A%20%22end_before%22%29%3B%0A%7D%0A%0Avar%20cleanupTimer%20%3D%200%3B%0Amp.updateMenu%20%3D%20function%28%29%20%7B%0A%09clearTimeout%28cleanupTimer%29%3B%0A%09addStyle%28%29%3B%0A%09getRestartlessAddons%28options.addonTypes%2C%20function%28addons%29%20%7B%0A%09%09var%20df%20%3D%20document.createDocumentFragment%28%29%3B%0A%09%09var%20prevType%3B%0A%09%09function%20sortPosition%28addon%29%20%7B%0A%09%09%09if%28%22STATE_ASK_TO_ACTIVATE%22%20in%20AddonManager%20%26%26%20addon.userDisabled%20%3D%3D%20AddonManager.STATE_ASK_TO_ACTIVATE%29%0A%09%09%09%09return%20options.sort.clickToPlay%3B%0A%09%09%09if%28addon.isActive%29%0A%09%09%09%09return%20options.sort.enabled%3B%0A%09%09%09return%20options.sort.disabled%3B%0A%09%09%7D%0A%09%09function%20key%28addon%29%20%7B%0A%09%09%09return%20options.addonTypes.indexOf%28addon.type%29%0A%09%09%09%09+%20%22%5Cn%22%20+%20sortPosition%28addon%29%0A%09%09%09%09+%20%22%5Cn%22%20+%20addon.name.toLowerCase%28%29%3B%0A%09%09%7D%0A%09%09addons.sort%28function%28a%2C%20b%29%20%7B%0A%09%09%09var%20ka%20%3D%20key%28a%29%3B%0A%09%09%09var%20kb%20%3D%20key%28b%29%3B%0A%09%09%09return%20ka%20%3D%3D%20kb%20%3F%200%20%3A%20ka%20%3C%20kb%20%3F%20-1%20%3A%201%3B%0A%09%09%7D%29.forEach%28function%28addon%29%20%7B%0A%09%09%09var%20type%20%3D%20addon.type%3B%0A%09%09%09if%28prevType%20%26%26%20type%20%21%3D%20prevType%29%0A%09%09%09%09df.appendChild%28document.createElementNS%28xulns%2C%20%22menuseparator%22%29%29%3B%0A%09%09%09prevType%20%3D%20type%3B%0A%09%09%09var%20icon%20%3D%20addon.iconURL%20%7C%7C%20addon.icon64URL%3B%0A%09%09%09var%20mi%20%3D%20document.createElementNS%28xulns%2C%20%22menuitem%22%29%3B%0A%09%09%09mi.className%20%3D%20%22menuitem-iconic%22%3B%0A%09%09%09var%20label%20%3D%20addon.name%3B%0A%09%09%09if%28options.showVersions%20%3D%3D%201%29%0A%09%09%09%09label%20+%3D%20%22%20%22%20+%20addon.version%3B%0A%09%09%09else%20if%28options.showVersions%20%3D%3D%202%29%0A%09%09%09%09mi.setAttribute%28%22acceltext%22%2C%20addon.version%29%3B%0A%09%09%09mi.setAttribute%28%22label%22%2C%20label%29%3B%0A%09%09%09mi.setAttribute%28%22image%22%2C%20icon%20%7C%7C%20mp.icons%5Btype%5D%20%7C%7C%20%22%22%29%3B%0A%09%09%09if%28%21icon%20%26%26%20mp.icons.useSVG%29%0A%09%09%09%09mi.style.fill%20%3D%20%22%2315c%22%3B%0A%09%09%09var%20tip%20%3D%20addon.description%20%7C%7C%20%22%22%3B%0A%09%09%09var%20delay%20%3D%20%22delayedStartupAddons%22%20in%20Services%0A%09%09%09%09%26%26%20Services.delayedStartupAddons%5Baddon.id%5D%20%7C%7C%20null%3B%0A%09%09%09var%20isDelayed%20%3D%20delay%20%21%3D%3D%20null%3B%0A%09%09%09mi.classList.toggle%28%22toggleRestartlessAddons-isDelayed%22%2C%20isDelayed%29%3B%0A%09%09%09if%28isDelayed%29%0A%09%09%09%09tip%20%3D%20%22%5BDelayed%20Startup%3A%20%22%20+%20delay.toLocaleString%28%29%20+%20%22%5D%22%20+%20%28tip%20%3F%20%22%5Cn%22%20+%20tip%20%3A%20%22%22%29%3B%0A%09%09%09tip%20%26%26%20mi.setAttribute%28%22tooltiptext%22%2C%20tip%29%3B%0A%09%09%09mi.classList.toggle%28%22toggleRestartlessAddons-isHidden%22%2C%20addon.hidden%20%7C%7C%20false%29%3B%0A%09%09%09setDisabled%28mi%2C%20addon.userDisabled%29%3B%0A%09%09%09mi._cbAddon%20%3D%20addon%3B%0A%09%09%09df.appendChild%28mi%29%3B%0A%09%09%7D%29%3B%0A%09%09mp.textContent%20%3D%20%22%22%3B%0A%09%09mp.appendChild%28df%29%3B%0A%09%7D%29%3B%0A%7D%3B%0Amp.handleEvent%20%3D%20function%28e%29%20%7B%0A%09var%20mi%20%3D%20e.target%3B%0A%09if%28%21%28%22_cbAddon%22%20in%20mi%29%29%0A%09%09return%3B%0A%09var%20addon%20%3D%20mi._cbAddon%3B%0A%09if%28e.type%20%3D%3D%20%22mousedown%22%29%20%7B%0A%09%09var%20closeMenu%20%3D%20isAskToActivateAddon%28addon%29%0A%09%09%09%3F%20options.closeMenuClickToPlay%0A%09%09%09%3A%20options.closeMenu%3B%0A%09%09if%28e.shiftKey%29%0A%09%09%09closeMenu%20%3D%20%21closeMenu%3B%0A%09%09mi.setAttribute%28%22closemenu%22%2C%20closeMenu%20%3F%20%22auto%22%20%3A%20%22none%22%29%3B%0A%09%09return%3B%0A%09%7D%0A%09var%20hasMdf%20%3D%20hasModifier%28e%29%3B%0A%09if%28e.type%20%3D%3D%20%22command%22%20%26%26%20%28%21hasMdf%20%7C%7C%20e.shiftKey%29%29%20%7B%0A%09%09let%20newDis%20%3D%20setNewDisabled%28addon%29%3B%0A%09%09setDisabled%28mi%2C%20newDis%29%3B%0A%09%7D%0A%09else%20if%28e.type%20%3D%3D%20%22command%22%20%26%26%20hasMdf%20%7C%7C%20e.type%20%3D%3D%20%22click%22%20%26%26%20e.button%20%3D%3D%201%29%20%7B%0A%09%09openAddonPage%28addon%29%3B%0A%09%09closeMenus%28mi%29%3B%0A%09%7D%0A%09else%20if%28e.type%20%3D%3D%20%22click%22%20%26%26%20e.button%20%3D%3D%202%29%20%7B%0A%09%09if%28openAddonOptions%28addon%29%29%0A%09%09%09closeMenus%28mi%29%3B%0A%09%7D%0A%7D%3B%0Amp.destroyMenu%20%3D%20function%28%29%20%7B%0A%09removeStyle%28%29%3B%0A%09clearTimeout%28cleanupTimer%29%3B%0A%09cleanupTimer%20%3D%20setTimeout%28function%28%29%20%7B%0A%09%09mp.textContent%20%3D%20%22%22%3B%0A%09%7D%2C%205000%29%3B%0A%7D%3B%0Amp.icons%20%3D%20%7B%0A%09get%20platformVersion%28%29%20%7B%0A%09%09delete%20this.platformVersion%3B%0A%09%09return%20this.platformVersion%20%3D%20parseFloat%28Services.appinfo.platformVersion%29%3B%0A%09%7D%2C%0A%09get%20useSVG%28%29%20%7B%0A%09%09delete%20this.useSVG%3B%0A%09%09return%20this.useSVG%20%3D%20Services.appinfo.name%20%3D%3D%20%22Firefox%22%20%26%26%20this.platformVersion%20%3E%3D%2057%3B%0A%09%7D%2C%0A%09get%20plugin%28%29%20%7B%0A%09%09delete%20this.plugin%3B%0A%09%09return%20this.plugin%20%3D%20this.useSVG%0A%09%09%09%3F%20this.platformVersion%20%3E%3D%2065%0A%09%09%09%09%3F%20%22chrome%3A//global/skin/plugins/pluginGeneric.svg%22%0A%09%09%09%09%3A%20%22chrome%3A//mozapps/skin/plugins/pluginGeneric.svg%22%0A%09%09%09%3A%20%22chrome%3A//mozapps/skin/plugins/pluginGeneric-16.png%22%3B%0A%09%7D%2C%0A%09get%20extension%28%29%20%7B%0A%09%09delete%20this.extension%3B%0A%09%09return%20this.extension%20%3D%20this.useSVG%0A%09%09%09%3F%20this.platformVersion%20%3E%3D%2076%0A%09%09%09%09%3F%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric.svg%22%20//%20Or%20chrome%3A//mozapps/skin/extensions/extension.svg%0A%09%09%09%09%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.svg%22%0A%09%09%09%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%3B%0A%09%7D%0A%7D%3B%0Afunction%20isAskToActivateAddon%28addon%29%20%7B%0A%09return%20addon.type%20%3D%3D%20%22plugin%22%0A%09%09%26%26%20%22STATE_ASK_TO_ACTIVATE%22%20in%20AddonManager%0A%09%09%26%26%20Services.prefs.getBoolPref%28%22plugins.click_to_play%22%2C%20true%29%3B%0A%7D%0Afunction%20setNewDisabled%28addon%29%20%7B%0A%09var%20newDis%20%3D%20getNewDisabled%28addon%29%3B%0A%09var%20oldDis%20%3D%20addon.userDisabled%3B%0A%09try%20%7B%0A%09%09addon.userDisabled%20%3D%20newDis%3B%0A%09%7D%0A%09catch%28e%29%20%7B%20//%20Error%3A%20Cannot%20disable%20hidden%20add-on%20firefox@getpocket.com%0A%09%09_log%28%22Can%27t%20set%20addon.userDisabled%20to%20%22%20+%20newDis%20+%20%22%2C%20error%3A%5Cn%22%20+%20e%29%3B%0A%09%09if%28addon.hidden%29%0A%09%09%09setNewDisabledRaw%28addon%2C%20newDis%29%3B%0A%09%7D%0A%09var%20realDis%20%3D%20addon.userDisabled%3B%0A%09if%28realDis%20%21%3D%20newDis%20%26%26%20addon.type%20%3D%3D%20%22extension%22%29%20%7B%20//%20Firefox%2062+%3F%20Weird%20things%20happens%0A%09%09setNewDisabledRaw%28addon%2C%20newDis%29%3B%0A%09%09realDis%20%3D%20addon.userDisabled%3B%0A%09%7D%0A%09if%28realDis%20%21%3D%20newDis%29%20%7B%20//%20We%20can%27t%20enable%20vulnerable%20plugins%0A%09%09let%20err%20%3D%20%22Can%27t%20set%20addon.userDisabled%20to%20%22%20+%20newDis%20+%20%22%2C%20real%20value%3A%20%22%20+%20realDis%3B%0A%09%09if%28newDis%29%20%7B%0A%09%09%09_log%28err%20+%20%22%5CnSTATE_ASK_TO_ACTIVATE%20not%20supported%3F%22%29%3B%0A%09%09%09newDis%20%3D%20false%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09%09_log%28err%20+%20%22%5CnVulnerable%20plugin%3F%22%29%3B%0A%09%09%09if%28oldDis%20%3D%3D%20AddonManager.STATE_ASK_TO_ACTIVATE%29%0A%09%09%09%09newDis%20%3D%20true%3B%0A%09%09%09else%0A%09%09%09%09newDis%20%3D%20AddonManager.STATE_ASK_TO_ACTIVATE%3B%0A%09%09%7D%0A%09%09addon.userDisabled%20%3D%20newDis%3B%0A%09%7D%0A%09ensureSpecialDisabled%28addon%2C%20newDis%29%3B%0A%09return%20addon.userDisabled%3B%0A%7D%0Afunction%20getNewDisabled%28addon%29%20%7B%0A%09//%20disabled%20-%3E%20STATE_ASK_TO_ACTIVATE%20-%3E%20enabled%20-%3E%20...%0A%09var%20curDis%20%3D%20addon.userDisabled%3B%0A%09var%20newDis%3B%0A%09if%28%22STATE_ASK_TO_ACTIVATE%22%20in%20AddonManager%20%26%26%20curDis%20%3D%3D%20AddonManager.STATE_ASK_TO_ACTIVATE%29%0A%09%09newDis%20%3D%20false%3B%0A%09else%20if%28%21curDis%29%0A%09%09newDis%20%3D%20true%3B%0A%09else%20%7B%0A%09%09if%28isAskToActivateAddon%28addon%29%29%0A%09%09%09newDis%20%3D%20AddonManager.STATE_ASK_TO_ACTIVATE%3B%0A%09%09else%0A%09%09%09newDis%20%3D%20false%3B%0A%09%7D%0A%09return%20newDis%3B%0A%7D%0Afunction%20setNewDisabledRaw%28addon%2C%20newDis%29%20%7B%0A%09_log%28%22Let%27s%20try%20set%20addon.userDisabled%20using%20raw%20hack%22%29%3B%0A%09let%20g%20%3D%20Components.utils.import%28%22resource%3A//gre/modules/addons/XPIProvider.jsm%22%2C%20%7B%7D%29%3B%0A%09if%28%22XPIDatabase%22%20in%20g%20%26%26%20%22updateAddonDisabledState%22%20in%20g.XPIDatabase%29%20%7B%20//%20Firefox%2061+%0A%09%09let%20rawAddon%20%3D%20g.XPIDatabase.getAddons%28%29.find%28function%28rawAddon%29%20%7B%0A%09%09%09return%20rawAddon.id%20%3D%3D%20addon.id%3B%0A%09%09%7D%29%3B%0A%09%09g.XPIDatabase.updateAddonDisabledState%28%0A%09%09%09rawAddon%2C%0A%09%09%09g.XPIDatabase.updateAddonDisabledState.length%20%3D%3D%201%20//%20Firefox%2074+%0A%09%09%09%09%3F%20%7B%20userDisabled%3A%20newDis%20%7D%0A%09%09%09%09%3A%20newDis%0A%09%09%29%3B%0A%09%7D%0A%09else%20if%28%22eval%22%20in%20g%29%20%7B%20//%20See%20%22set%20userDisabled%28val%29%22%0A%09%09let%20addonFor%20%3D%20g.eval%28%22addonFor%22%29%3B%0A%09%09let%20rawAddon%20%3D%20addonFor%28addon%29%3B%0A%09%09//rawAddon.userDisabled%20%3D%20newDis%3B%0A%09%09g.XPIProvider.updateAddonDisabledState%28rawAddon%2C%20newDis%29%3B%0A%09%7D%0A%09else%20%7B%20//%20Firefox%2057+%3F%20See%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fpid%3D745272%23p745272%0A%09%09updateAddonDisabledState%28addon%2C%20newDis%29%3B%0A%09%7D%0A%7D%0Afunction%20updateAddonDisabledState%28addon%2C%20newDis%29%20%7B%0A%09var%20nsvo%20%3D%20Components.utils.import%28%22resource%3A//gre/modules/addons/XPIProvider.jsm%22%2C%20%7B%7D%29%3B%0A%09var%20key%20%3D%20%22_cbToggleRestartlessAddonsData%22%3B%0A%09var%20url%20%3D%20URL.createObjectURL%28new%20Blob%28%5B%0A%09%09%22XPIProvider.updateAddonDisabledState%28addonFor%28this.%22%20+%20key%20+%20%22%5B0%5D%29%2C%20this.%22%20+%20key%20+%20%22%5B1%5D%29%3B%20delete%20this.%22%20+%20key%20+%20%22%3B%22%0A%09%5D%29%29%3B%0A%09addDestructor%28function%28%29%20%7B%0A%09%09URL.revokeObjectURL%28url%29%3B%0A%09%7D%29%3B%0A%09%28updateAddonDisabledState%20%3D%20function%28addon%2C%20newDis%29%20%7B%0A%09%09nsvo%5Bkey%5D%20%3D%20%5Baddon%2C%20newDis%5D%3B%0A%09%09Services.scriptloader.loadSubScript%28url%2C%20nsvo%29%3B%0A%09%7D%29%28addon%2C%20newDis%29%3B%0A%7D%0Afunction%20setDisabled%28mi%2C%20disabled%29%20%7B%0A%09var%20askToActivate%20%3D%20%22STATE_ASK_TO_ACTIVATE%22%20in%20AddonManager%20%26%26%20disabled%20%3D%3D%20AddonManager.STATE_ASK_TO_ACTIVATE%3B%0A%09var%20cl%20%3D%20mi.classList%3B%0A%09cl.toggle%28%22toggleRestartlessAddons-askToActivate%22%2C%20askToActivate%29%3B%0A%09cl.toggle%28%22toggleRestartlessAddons-disabled%22%2C%20disabled%20%26%26%20%21askToActivate%29%3B%0A%7D%0Afunction%20ensureSpecialDisabled%28addon%2C%20newDis%29%20%7B%0A%09if%28addon.id%20%3D%3D%20%22screenshots@mozilla.org%22%29%0A%09%09Services.prefs.setBoolPref%28%22extensions.screenshots.disabled%22%2C%20newDis%29%3B%0A%7D%0A%0Aif%28%0A%09this%20instanceof%20XULElement%20//%20Custom%20Buttons%0A%09%26%26%20typeof%20event%20%3D%3D%20%22object%22%0A%09%26%26%20%21%28%22type%22%20in%20event%29%20%26%26%20typeof%20_phase%20%3D%3D%20%22string%22%20%26%26%20_phase%20%3D%3D%20%22init%22%20//%20Initialization%0A%29%20%7B%0A%09this.type%20%3D%20%22menu%22%3B%0A%09this.orient%20%3D%20%22horizontal%22%3B%0A%09this.appendChild%28mp%29%3B%0A%0A%09this.onmouseover%20%3D%20function%28e%29%20%7B%0A%09%09if%28e.target%20%21%3D%20this%29%0A%09%09%09return%3B%0A%09%09Array.prototype.some.call%28%0A%09%09%09this.parentNode.getElementsByTagName%28%22*%22%29%2C%0A%09%09%09function%28node%29%20%7B%0A%09%09%09%09if%28%0A%09%09%09%09%09node%20%21%3D%20this%0A%09%09%09%09%09%26%26%20node.namespaceURI%20%3D%3D%20xulns%0A%09%09%09%09%09//%20See%20https%3A//github.com/Infocatcher/Custom_Buttons/issues/28%0A%09%09%09%09%09//%26%26%20node.boxObject%0A%09%09%09%09%09//%26%26%20node.boxObject%20instanceof%20Components.interfaces.nsIMenuBoxObject%0A%09%09%09%09%09%26%26%20%22open%22%20in%20node%0A%09%09%09%09%09%26%26%20node.open%0A%09%09%09%09%09%26%26%20node.getElementsByTagName%28%22menupopup%22%29.length%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09node.open%20%3D%20false%3B%0A%09%09%09%09%09this.open%20%3D%20true%3B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09this%0A%09%09%29%3B%0A%09%7D%3B%0A%09this.onmousedown%20%3D%20function%28e%29%20%7B%0A%09%09if%28e.target%20%3D%3D%20this%20%26%26%20e.button%20%3D%3D%200%20%26%26%20hasModifier%28e%29%29%0A%09%09%09e.preventDefault%28%29%3B%0A%09%7D%3B%0A%09this.oncontextmenu%20%3D%20function%28e%29%20%7B%0A%09%09if%28e.target%20%3D%3D%20this%20%26%26%20%21hasModifier%28e%29%20%26%26%20hasUpdater%28%29%29%0A%09%09%09e.preventDefault%28%29%3B%0A%09%7D%3B%0A%09this.onclick%20%3D%20function%28e%29%20%7B%0A%09%09if%28e.target%20%21%3D%20this%29%0A%09%09%09return%3B%0A%09%09if%28e.button%20%3D%3D%200%20%26%26%20hasModifier%28e%29%20%7C%7C%20e.button%20%3D%3D%201%29%0A%09%09%09openAddonsManager%28%29%3B%0A%09%09else%20if%28e.button%20%3D%3D%202%20%26%26%20%21hasModifier%28e%29%20%26%26%20hasUpdater%28%29%29%0A%09%09%09checkForAddonsUpdates.call%28this%29%3B%0A%09%7D%3B%0A%7D%0Aelse%20%7B%20//%20Mouse%20gestures%20or%20something%20other...%0A%09let%20e%3B%0A%09if%28typeof%20event%20%3D%3D%20%22object%22%20%26%26%20event%20instanceof%20Event%20%26%26%20%22screenX%22%20in%20event%29%20//%20FireGestures%0A%09%09e%20%3D%20event%3B%0A%09else%20if%28%0A%09%09this%20instanceof%20Components.interfaces.nsIDOMChromeWindow%0A%09%09%26%26%20%22mgGestureState%22%20in%20window%20%26%26%20%22endEvent%22%20in%20mgGestureState%20//%20Mouse%20Gestures%20Redox%0A%09%29%0A%09%09e%20%3D%20mgGestureState.endEvent%3B%0A%09else%20%7B%0A%09%09let%20anchor%20%3D%20this%20instanceof%20XULElement%20%26%26%20this%0A%09%09%09%7C%7C%20window.gBrowser%20%26%26%20gBrowser.selectedBrowser%0A%09%09%09%7C%7C%20document.documentElement%3B%0A%09%09if%28%22boxObject%22%20in%20anchor%29%20%7B%0A%09%09%09let%20bo%20%3D%20anchor.boxObject%3B%0A%09%09%09e%20%3D%20%7B%0A%09%09%09%09screenX%3A%20bo.screenX%2C%0A%09%09%09%09screenY%3A%20bo.screenY%0A%09%09%09%7D%3B%0A%09%09%09if%28this%20instanceof%20XULElement%29%0A%09%09%09%09e.screenY%20+%3D%20bo.height%3B%0A%09%09%7D%0A%09%7D%0A%09if%28%21e%20%7C%7C%20%21%28%22screenX%22%20in%20e%29%29%0A%09%09throw%20new%20Error%28%22%5BToggle%20Restartless%20Add-ons%5D%3A%20Can%27t%20get%20event%20object%22%29%3B%0A%09document.documentElement.appendChild%28mp%29%3B%0A%09mp.addEventListener%28%22popuphidden%22%2C%20function%20destroy%28e%29%20%7B%0A%09%09mp.removeEventListener%28e.type%2C%20destroy%2C%20false%29%3B%0A%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09mp.destroyMenu%28%29%3B%0A%09%09%09mp.parentNode.removeChild%28mp%29%3B%0A%09%09%7D%2C%200%29%3B%0A%09%7D%2C%20false%29%3B%0A%09mp.openPopupAtScreen%28e.screenX%2C%20e.screenY%29%3B%0A%7D%0A%0Afunction%20getRestartlessAddons%28addonTypes%2C%20callback%2C%20context%29%20%7B%0A%09if%28%21%28%22AddonManager%22%20in%20window%29%29%0A%09%09Components.utils.import%28%22resource%3A//gre/modules/AddonManager.jsm%22%29%3B%0A%09if%28%21%28%22Services%22%20in%20window%29%29%0A%09%09Components.utils.import%28%22resource%3A//gre/modules/Services.jsm%22%29%3B%0A%09var%20then%2C%20promise%20%3D%20AddonManager.getAddonsByTypes%28addonTypes%2C%20then%20%3D%20function%28addons%29%20%7B%0A%09%09callback.call%28context%2C%20addons.filter%28function%28addon%29%20%7B%0A%09%09%09var%20ops%20%3D%20addon.operationsRequiringRestart%3B%0A%09%09%09return%20%21addon.appDisabled%0A%09%09%09%09%26%26%20%21%28ops%20%26%20AddonManager.OP_NEEDS_RESTART_ENABLE%20%7C%7C%20ops%20%26%20AddonManager.OP_NEEDS_RESTART_DISABLE%29%0A%09%09%09%09%26%26%20%28%0A%09%09%09%09%09%21addon.hidden%0A%09%09%09%09%09%7C%7C%20options.showHidden%20%3E%200%0A%09%09%09%09%09%7C%7C%20options.showHidden%20%3D%3D%20-1%20%26%26%20%21addon.userDisabled%0A%09%09%09%09%29%0A%09%09%09%09%26%26%20%28addon.iconURL%20%7C%7C%20%22%22%29.substr%280%2C%2029%29%20%21%3D%20%22resource%3A//search-extensions/%22%3B%0A%09%09%7D%29%29%3B%0A%09%7D%29%3B%0A%09promise%20%26%26%20typeof%20promise.then%20%3D%3D%20%22function%22%20%26%26%20promise.then%28then%2C%20Components.utils.reportError%29%3B%20//%20Firefox%2061+%0A%7D%0Afunction%20openAddonOptions%28addon%29%20%7B%0A%09//%20Based%20on%20code%20from%20chrome%3A//mozapps/content/extensions/extensions.js%0A%09//%20Firefox%2021.0a1%20%282013-01-27%29%0A%09var%20optionsURL%20%3D%20addon.optionsURL%3B%0A%09if%28%21addon.isActive%20%7C%7C%20%21optionsURL%29%0A%09%09return%20false%3B%0A%09if%28addon.type%20%3D%3D%20%22plugin%22%29%20//%20No%20options%20for%20now%21%0A%09%09return%20false%3B%0A%09if%28%0A%09%09addon.optionsType%20%3D%3D%20%28AddonManager.OPTIONS_TYPE_INLINE%20%7C%7C%20NaN%29%0A%09%09%7C%7C%20addon.optionsType%20%3D%3D%20%28AddonManager.OPTIONS_TYPE_INLINE_INFO%20%7C%7C%20NaN%29%0A%09%09%7C%7C%20addon.optionsType%20%3D%3D%20%28AddonManager.OPTIONS_TYPE_INLINE_BROWSER%20%7C%7C%20NaN%29%0A%09%29%0A%09%09openAddonPage%28addon%2C%20true%29%3B%0A%09else%20if%28addon.optionsType%20%3D%3D%20AddonManager.OPTIONS_TYPE_TAB%20%26%26%20%22switchToTabHavingURI%22%20in%20window%29%0A%09%09switchToTabHavingURI%28optionsURL%2C%20true%29%3B%0A%09else%20%7B%0A%09%09let%20windows%20%3D%20Services.wm.getEnumerator%28null%29%3B%0A%09%09while%28windows.hasMoreElements%28%29%29%20%7B%0A%09%09%09let%20win%20%3D%20windows.getNext%28%29%3B%0A%09%09%09if%28win.document.documentURI%20%3D%3D%20optionsURL%29%20%7B%0A%09%09%09%09win.focus%28%29%3B%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09//%20Note%3A%20original%20code%20checks%20browser.preferences.instantApply%20and%20may%20open%20modal%20windows%0A%09%09window.openDialog%28optionsURL%2C%20%22%22%2C%20%22chrome%2Ctitlebar%2Ctoolbar%2Ccenterscreen%2Cdialog%3Dno%22%29%3B%0A%09%7D%0A%09return%20true%3B%0A%7D%0Afunction%20openAddonsManager%28view%29%20%7B%0A%09var%20openAddonsMgr%20%3D%20window.BrowserOpenAddonsMgr%20//%20Firefox%0A%09%09%7C%7C%20window.openAddonsMgr%20//%20Thunderbird%0A%09%09%7C%7C%20window.toEM%3B%20//%20SeaMonkey%0A%09openAddonsMgr%28view%29%3B%0A%7D%0Afunction%20openAddonPage%28addon%2C%20scrollToPreferences%29%20%7B%0A%09var%20platformVersion%20%3D%20parseFloat%28%0A%09%09Services.appinfo.name%20%3D%3D%20%22Pale%20Moon%22%0A%09%09%09%3F%20Services.appinfo.version%0A%09%09%09%3A%20Services.appinfo.platformVersion%0A%09%29%3B%0A%09scrollToPreferences%20%3D%20scrollToPreferences%20%26%26%20platformVersion%20%3E%3D%2012%0A%09%09%3F%20%22/preferences%22%0A%09%09%3A%20%22%22%3B%0A%09openAddonsManager%28%22addons%3A//detail/%22%20+%20encodeURIComponent%28addon.id%29%20+%20scrollToPreferences%29%3B%0A%7D%0A%0Afunction%20hasModifier%28e%29%20%7B%0A%09return%20e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%3B%0A%7D%0A%0Afunction%20addStyle%28%29%20%7B%0A%09if%28addStyle.hasOwnProperty%28%22_style%22%29%29%0A%09%09return%3B%0A%09var%20style%20%3D%20%27%5C%0A%09%09.toggleRestartlessAddons-isDelayed%20%3E%20.menu-iconic-text%20%7B%5Cn%5C%0A%09%09%09opacity%3A%200.75%3B%5Cn%5C%0A%09%09%09color%3A%20%23070%3B%5Cn%5C%0A%09%09%7D%5Cn%5C%0A%09%09.toggleRestartlessAddons-isHidden%20%3E%20.menu-iconic-text%20%7B%5Cn%5C%0A%09%09%09color%3A%20%23609%3B%5Cn%5C%0A%09%09%7D%5Cn%5C%0A%09%09.toggleRestartlessAddons-disabled%20%3E%20.menu-iconic-left%20%7B%5Cn%5C%0A%09%09%09opacity%3A%200.4%3B%5Cn%5C%0A%09%09%7D%5Cn%5C%0A%09%09.toggleRestartlessAddons-disabled%20%3E%20.menu-iconic-text%2C%5Cn%5C%0A%09%09.toggleRestartlessAddons-disabled%20%3E%20.menu-accel-container%20%7B%5Cn%5C%0A%09%09%09opacity%3A%200.5%3B%5Cn%5C%0A%09%09%7D%5Cn%5C%0A%09%09.toggleRestartlessAddons-askToActivate%20%7B%5Cn%5C%0A%09%09%09color%3A%20-moz-nativehyperlinktext%3B%5Cn%5C%0A%09%09%7D%27%3B%0A%09addStyle._style%20%3D%20document.insertBefore%28%0A%09%09document.createProcessingInstruction%28%0A%09%09%09%22xml-stylesheet%22%2C%0A%09%09%09%27href%3D%22%27%20+%20%22data%3Atext/css%2C%22%0A%09%09%09%09+%20encodeURIComponent%28style%29%20+%20%27%22%20type%3D%22text/css%22%27%0A%09%09%29%2C%0A%09%09document.documentElement%0A%09%29%3B%0A%7D%0Afunction%20removeStyle%28%29%20%7B%0A%09if%28%21addStyle.hasOwnProperty%28%22_style%22%29%29%0A%09%09return%3B%0A%09var%20s%20%3D%20addStyle._style%3B%0A%09s.parentNode.removeChild%28s%29%3B%0A%09delete%20addStyle._style%3B%0A%7D%0Afunction%20closeMenus%28node%29%20%7B%0A%09//%20Based%20on%20function%20closeMenus%20from%20chrome%3A//browser/content/utilityOverlay.js%0A%09for%28%3B%20node%20%26%26%20%22tagName%22%20in%20node%3B%20node%20%3D%20node.parentNode%29%20%7B%0A%09%09if%28%0A%09%09%09node.namespaceURI%20%3D%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%26%26%20%28node.localName%20%3D%3D%20%22menupopup%22%20%7C%7C%20node.localName%20%3D%3D%20%22popup%22%29%0A%09%09%29%0A%09%09%09node.hidePopup%28%29%3B%0A%09%7D%0A%7D%0Afunction%20_log%28s%29%20%7B%0A%09if%28typeof%20LOG%20%3D%3D%20%22function%22%29%20//%20Custom%20Buttons%0A%09%09LOG%28s%29%3B%0A%09else%20//%20Or%20something%20else%0A%09%09Services.console.logStringMessage%28%22Toggle%20Restartless%20Add-ons%3A%20%22%20+%20s%29%3B%0A%7D%0A%0Afunction%20hasUpdater%28%29%20%7B%0A%09var%20has%20%3D%20checkForAddonsUpdates.toString%28%29.indexOf%28%22about%3Aaddons%22%29%20%21%3D%20-1%3B%0A%09hasUpdater%20%3D%20function%28%29%20%7B%0A%09%09return%20has%3B%0A%09%7D%3B%0A%09return%20has%3B%0A%7D%0Afunction%20checkForAddonsUpdates%28%29%20%7B%0A//%3D%3D%20Check%20for%20Addons%20Updates%20begin%0A%0A//%3D%3D%20Check%20for%20Addons%20Updates%20end%0A%7D%0A%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%20%0A%0A%0A%0A%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано KOMMEHTATOP (02-10-2020 10:38:31)


Distance Subordinatio!

Отсутствует

 

Board footer

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