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

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

№90119-07-2009 15:02:01

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

Антон, возможно слишком сложно, но было бы полезно. Нужна кнопка: при перетаскивании на неё вкладки сама вкладка закрывается, а в кнопке, в выпадающем списке появляется закладка с названием из заголовка. Удаляется закладка правым щелчком мыши. При открытии закладки (как в текущей, так и в новой вкладке) соответствующая закладка удаляется из списка кнопки.


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№90219-07-2009 15:56:42

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

Re: Custom Buttons

Najlus
В качестве возможной альтернативы можно посмотреть на
Link Pad и Netscape Link Pad


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

Отсутствует

 

№90319-07-2009 16:25:13

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

Infocatcher пишет

Najlus В качестве возможной альтернативы можно посмотреть наLink Pad и Netscape Link Pad

Не айс (с).
Во первых: иконка висит в трее, а тянуть вкладку на эту маленькую кнопочку не сказать чтоб удобно (ибо та, которая на тулбар идёт напрочь отказывается добавлять в закладки).
Во вторых: список открывается в боковой панели и без иконок.
А в третьих: добавленная вкладка не закрывается =(


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№90419-07-2009 16:53:25

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Custom Buttons

Najlus
Если надо сохранять "закладки" между перезапусками браузера, то я - пас.
Если достаточно хранения в пределах сесси - сделаю.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№90519-07-2009 16:58:09

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Ну тогда Taboo или Ридлейтер (Read it Later)

Добавлено 19-07-2009 17:01:54
Anton, Вы разбираетесь... скажите, сложно было бы сделать
-------------
Аддон должен определять, какие темы установлены, и какая сейчас активна.
В зависимости от того, какая тема активна, он должен подключать в userChrome.css указанные стили.
Плюс диалоговые окна Добавить стиль и Включить стили для конкретных тем. По умолчанию все выключены для всех тем.
Что-то типа

Выделить код

Код:

[v] аддон включен
Стили:       Default scrollbars [v]  | Default buttons [v]        | Large statusbar [v] ...
Default      [_]                     | [_]                        | [_]                           [откл. все]
MuraCom      [v]                     | [_]                        | [_]                           [откл. все]
IdioticDark  [_]                     | [_]                        | [_]                           [откл. все]
FourDots     [_]                     | [v]                        | [v]                           [откл. все]
EyesClosed   [v]                     | [v]                        | [v]                           [откл. все]
[+ новый стиль]
[turn searchbar icon on ][V] [+ добавить]

У меня уже есть подборки стилей для лечения отвалившихся полосок прокрутки у темы и отвалившихся значков поисковой строки, закладок и табов.
---------
?
Сорри за оффтоп, и я понимаю, что уже спрашивал, но очень нужно, и далеко не только мне.

Отредактировано Al_H (19-07-2009 17:02:48)

Отсутствует

 

№90619-07-2009 17:14:16

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Custom Buttons

Najlus
В раздел "Инициализация":

Выделить код

Код:

var menu =
<menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
	   onclick="this. parentNode. openTab (event);"/>
menu = new DOMParser (). parseFromString (menu. toXMLString (), "application/xml"). documentElement;
this. orient = "horizontal";
this. appendChild (menu);

this. handleDragOver = function (event)
{
	var dt = event. dataTransfer;
	var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
	if (!tab)
		return;
	event. preventDefault ();
	event. stopPropagation ();
	return dt. effectAllowed = dt. dropEffect = "link";
};

this. handleDrop = function (event)
{
	var dt = event. dataTransfer;
	var url = dt. mozGetDataAt ("text/x-moz-text-internal", 0);
	var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
	var label = tab. label;
	var br = getBrowser ();
	//if (br. tabContainer. childNodes. length > 1)
		br. removeTab (tab);
	var menu = this. getElementsByTagName ("menupopup") [0];
	var mi = document. createElement ("menuitem");
	mi. setAttribute ("label", label);
	mi. setAttribute ("url", url);
	menu. appendChild (mi);
	this. type = "menu";
};

this. openTab = function (event)
{
	var mi = event. target;
	var url = mi. getAttribute ("url");
	if (event. button < 2)
	{
		if (event. button == 0)
			getBrowser (). loadURI (url, null, null);
		else
			getBrowser (). addTab (url);
		menu. hidePopup ();
	}
	this. deleteMenuitem (mi);
};

this. deleteMenuitem = function (menuitem)
{
	var menu = menuitem. parentNode;
	menu. removeChild (menuitem);
	if (menu. childNodes. length == 0)
	{
		menu. hidePopup ();
		this. type = "";
	}
};

this. setAttribute ("ondragdrop", "return this. handleDrop (event);");
this. setAttribute ("ondragover", "return this. handleDragOver (event);");

Al_H

В зависимости от того, какая тема активна, он должен подключать в userChrome.css указанные стили.
Плюс диалоговые окна Добавить стиль и Включить стили для конкретных тем. По умолчанию все выключены для всех тем.

Поподробней, пожалуйста - я с темами и стилями как пользователь дела совсем не имею.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№90719-07-2009 17:36:11

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

Anton пишет

В раздел "Инициализация"...

Спасибо =) то, что надо =)

Если надо сохранять "закладки" между перезапусками браузера, то я - пас.

Жаль =(
Понимаю конечно что слишком много, но вы можете сделать подобную кнопку для расширения etscape Link Pad, чтоб и между сессиями сохранялось (а то малоли там сбой или ещё что)


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№90819-07-2009 18:10:41

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Anton пишет

Поподробней, пожалуйста - я с темами и стилями как пользователь дела совсем не имею.

С удовольствием. Есть аддон Stylish. Он фактически предоставляет интерфейс к двум сервисам - встроенным userChrome.css и userContent.css (которые, как Вы знаете, позволяют модифицировать внешний вид браузера и сайтов, соответственно, причем, начиная с версии 1.5, еще и специфично для URL или домена), плюс службы userstyles, таковые стили распространяющей.
Есть аддоны для модификации конкретных тем, например, Two Dimensions (работает), Whitehart (встроен в саму тему, и работает), Foxdie (отвратительно работает, или не работает вообще).
Есть темы. Темы бывают совместимыми и несовместимыми. Это-то меня и не устраивает. Где-то 4%-6% тем имеют серьезные дефекты в конструкции. Остальные несовместимы только потому, что отдельные их элементы не обновлены под гайдлайны для разработки тем именно 3.5, а не 3.0, либо под разные ОСьки, а не только под Винду или скажем Мак или Линукс. Или же проблемы с поддержкой Locationbar2, Fission, аддонов для панели вкладок. Таковая несовместимость приводит ровно к одним и тем же ошибкам (невидимые полоски прокрутки, неформатные окна, съехавшие поля адреса и поиска, и так далее). Кроме того, некоторые девелоперы лучше нас знают, что нам не нужны значки на панели закладок, значок текущей поисковой системы, и так далее.

Собственно, это была вводная. Многое решается при помощи userChrome.css или Stylish. Например, создаем стиль, и заставляем вернуться назад иконку поисковой машины. Таких стилей в сумме может быть 12-25. Осталось решить две проблемы. 1. использование ресурсов из другой темы, и прежде всего, из дефолтной. Это позволит более полно подменять дефектный код - например, включить полоску прокрутки как в теме по умолчанию, и не мучиться. Вторая проблема - эти хаки необходимы только там, где они необходимы, а повесить в стиль детектор активной темы на данный момент не представляется возможным встроенными средствами. То есть, как только Вы переключили тему (ну, не Вы, а я, Вы их не используете), необходимо слазить за бумажкой, по ней свериться, и отключить ненужные стили, и включить необходимые. Вот для решения двух этих проблем необходим аддон.
Можно, например, в элемент верхнего уровня добавлять параметр currenttheme="Theme_Name_in_Latin_Without_Garbage_Characters". Но тогда придется модифицировать каждый из этих стилей ради каждой темы. В идеале хотелось бы менеджер стилей, позволяющий быстро проставить флажки для тех пар тема-стиль, для которых необходимо, и налету подключающий при запуске браузера только стили, относящиеся к данной теме. Или еще вариант, это может быть надстройка над Stylish, как Stylish-Custom.

Отредактировано Al_H (19-07-2009 18:12:06)

Отсутствует

 

№90919-07-2009 21:42:17

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Custom Buttons

Najlus
Так:

Выделить код

Код:

var path = "c:\\tabbookmarks.xml";

this. handleDragOver = function (event)
{
	var dt = event. dataTransfer;
	var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
	if (!tab)
		return;
	event. preventDefault ();
	event. stopPropagation ();
	return dt. effectAllowed = dt. dropEffect = "link";
}

this. handleDrop = function (event)
{
	var dt = event. dataTransfer;
	var url = dt. mozGetDataAt ("text/x-moz-text-internal", 0);
	var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
	var label = tab. label;
	var br = getBrowser ();
	//if (br. tabContainer. childNodes. length > 1)
		br. removeTab (tab);
	this. addMenuitem (label, url);
};

this. addMenuitem = function (label, url)
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	var mi = document. createElement ("menuitem");
	mi. setAttribute ("label", label);
	mi. setAttribute ("url", url);
	menu. appendChild (mi);
	this. type = "menu";
	this. flushMenu ();
};

this. deleteMenuitem = function (menuitem)
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	menu. removeChild (menuitem);
	if (menu. getElementsByTagName ("menuitem"). length == 0)
	{
		menu. hidePopup ();
		this. type = "";
	}
	this. flushMenu ();
};

this. flushMenu = function ()
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	var xs = new XMLSerializer ();
	var xmenu = xs. serializeToString (menu);
	var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"].
			  createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
	suc. charset = "UTF-8";
	xmenu = suc. ConvertFromUnicode (xmenu);
	custombuttons. writeFile (path, xmenu);
};

this. getMenu = function (event)
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	if (menu)
		this. removeChild (menu);
	menu = "";
	try
	{
		file = Components. classes ["@mozilla.org/file/local;1"].
			   createInstance (Components. interfaces. nsILocalFile);
		file. initWithPath (path);
		var fis = Components. classes ["@mozilla.org/network/file-input-stream;1"].
				  createInstance (Components. interfaces. nsIFileInputStream);
		fis.init (file, 0x01, 00004, null);
		var sis = Components. classes ["@mozilla.org/scriptableinputstream;1"].
				  createInstance (Components. interfaces. nsIScriptableInputStream);
		sis. init (fis);
		menu = sis. read (sis. available ());
		sis. close ();
		var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"].
				  createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
		suc. charset = "UTF-8";
		menu = suc. ConvertToUnicode (menu);
		menu = new XML (menu) || "";
	}
	catch (e)
	{
		menu = "";
	}
	if (!menu)
	{
		menu =
		<menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
			   onclick="this. parentNode. openTab (event);"/>
	}
	menu = new DOMParser (). parseFromString (menu. toXMLString (), "application/xml"). documentElement;
	this. appendChild (menu);
	if (menu. getElementsByTagName ("menuitem"). length > 0)
		this. type = "menu";
	this. orient = "horizontal";
	return menu;
};

this. openTab = function (event)
{
	var mi = event. target;
	var menu = mi. parentNode;
	var url = mi. getAttribute ("url");
	if (event. button < 2)
	{
		if (event. button == 0)
			getBrowser (). loadURI (url, null, null);
		else
			getBrowser (). addTab (url);
		menu. hidePopup ();
	}
	else
		event. stopPropagation ();
	this. deleteMenuitem (mi);
	this. flushMenu (menu);
};

this. setAttribute ("ondragdrop", "return this. handleDrop (event);");
this. setAttribute ("ondragover", "return this. handleDragOver (event);");
this. setAttribute ("onmouseover", "if (event. target == this) this. getMenu (event);");
this. getMenu ();

пойдёт ?
Код в раздел "Инициализация", в первой строке можно поправить путь к файлу, где будут храниться "закладки".

Al_H
Если сделаю, то не скоро - надо ознакомиться с предметной областью. Попробую разобраться в течение следующей недели.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№91019-07-2009 21:43:57

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Спасибо большое заранее!
Если нужно, помогу, чем смогу. Например, могу дать примеры стилей.

Отсутствует

 

№91119-07-2009 22:25:47

Крошка Ру
Участник
 
Группа: Extensions
Зарегистрирован: 19-10-2008
Сообщений: 8718
UA: Chrome 3.0

Re: Custom Buttons

Anton пишет

Есть аддон Stylish.....Есть аддоны для модификации конкретных тем....

Al_H, Anton
может будет интересно покопаться ещё в AnyColor и Настройки Классической Компактной темы :)

Отредактировано Крошка Ру (19-07-2009 22:26:11)

Отсутствует

 

№91219-07-2009 23:58:17

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

Re: Custom Buttons

Anton пишет

Код в раздел "Инициализация", в первой строке можно поправить путь к файлу, где будут храниться "закладки".

На правах развлекательства:

Выделить код

Код:

var profileDir = Components.classes["@mozilla.org/file/directory_service;1"]
	.getService(Components.interfaces.nsIProperties)
	.get("ProfD", Components.interfaces.nsILocalFile)
	.path;
var path = profileDir + "\\tabbookmarks.xml";

this. handleDragOver = function (event)
{
	var dt = event. dataTransfer;
	var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
	if (!tab)
		return;
	event. preventDefault ();
	event. stopPropagation ();
	return dt. effectAllowed = dt. dropEffect = "link";
}

this. handleDrop = function (event)
{
	var dt = event. dataTransfer;
	var url = dt. mozGetDataAt ("text/x-moz-text-internal", 0);
	var tab = dt. mozGetDataAt (TAB_DROP_TYPE, 0);
	var label = tab. label;
	var image = tab. image;
	var br = getBrowser ();
	//if (br. tabContainer. childNodes. length > 1)
		br. removeTab (tab);
	this. addMenuitem (label, url, image);
};

this. addMenuitem = function (label, url, image)
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	var mi = document. createElement ("menuitem");
	mi. setAttribute ("label", label);
	mi. setAttribute ("url", url);
	mi. setAttribute ("tooltiptext", url);
	mi. className = "menuitem-iconic bookmark-item";
	image && mi. setAttribute ("image", "moz-anno:favicon:" + image);
	menu. appendChild (mi);
	this. type = "menu";
	this. flushMenu ();
};

this. deleteMenuitem = function (menuitem)
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	menu. removeChild (menuitem);
	if (menu. getElementsByTagName ("menuitem"). length == 0)
	{
		menu. hidePopup ();
		this. type = "";
	}
	this. flushMenu ();
};

this. flushMenu = function ()
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	var xs = new XMLSerializer ();
	var xmenu = xs. serializeToString (menu);
	var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"].
			  createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
	suc. charset = "UTF-8";
	xmenu = suc. ConvertFromUnicode (xmenu);
	custombuttons. writeFile (path, xmenu);
};

this. getMenu = function (event)
{
	var menu = this. getElementsByTagName ("menupopup") [0];
	if (menu)
		this. removeChild (menu);
	menu = "";
	try
	{
		file = Components. classes ["@mozilla.org/file/local;1"].
			   createInstance (Components. interfaces. nsILocalFile);
		file. initWithPath (path);
		var fis = Components. classes ["@mozilla.org/network/file-input-stream;1"].
				  createInstance (Components. interfaces. nsIFileInputStream);
		fis.init (file, 0x01, 00004, null);
		var sis = Components. classes ["@mozilla.org/scriptableinputstream;1"].
				  createInstance (Components. interfaces. nsIScriptableInputStream);
		sis. init (fis);
		menu = sis. read (sis. available ());
		sis. close ();
		var suc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"].
				  createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
		suc. charset = "UTF-8";
		menu = suc. ConvertToUnicode (menu);
		menu = new XML (menu) || "";
	}
	catch (e)
	{
		menu = "";
	}
	if (!menu)
	{
		menu =
		<menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
			   onclick="this. parentNode. openTab (event);"/>
	}
	menu = new DOMParser (). parseFromString (menu. toXMLString (), "application/xml"). documentElement;
	this. appendChild (menu);
	if (menu. getElementsByTagName ("menuitem"). length > 0)
		this. type = "menu";
	this. orient = "horizontal";
	return menu;
};

this. openTab = function (event)
{
	var mi = event. target;
	var menu = mi. parentNode;
	var url = mi. getAttribute ("url");
	if (event. button < 2)
	{
		if (event. button == 0)
			getBrowser (). loadURI (url, null, null);
		else
			getBrowser (). loadOneTab(url, null, null, null, false /*load in background*/, false);
		menu. hidePopup ();
	}
	else
		event. stopPropagation ();
	this. deleteMenuitem (mi);
	this. flushMenu (menu);
};

this. setAttribute ("ondragdrop", "return this. handleDrop (event);");
this. setAttribute ("ondragover", "return this. handleDragOver (event);");
this. setAttribute ("onmouseover", "if (event. target == this) this. getMenu (event);");
this. getMenu ();

+ путь относительно профиля
+ иконки у «закладок»
+ ссылки во всплывающих подсказках
+ переключение на открываемую вкладку (см. /*load in background*/)


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

Отсутствует

 

№91320-07-2009 11:05:01

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

Anton пишет

NajlusТак:Код...
пойдёт? Код в раздел "Инициализация", в первой строке можно поправить путь к файлу, где будут храниться "закладки".

Спасибо огромное =)

Infocatcher пишет

На правах развлекательства:Код...
+ путь относительно профиля
+ иконки у «закладок»
+ ссылки во всплывающих подсказках
+ переключение на открываемую вкладку (см. /*load in background*/)

Тоже огромное спасибо =) особенно за иконки =) Правда переключение на открываемую вкладку отключил, но всёравно спасибо =)

Вам памятник ставить нужно =)
Надо будет как нить разобраться и сделать из этой кнопки расширение, думаю многим будет полезно.


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№91420-07-2009 11:52:08

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Спасибо, Крошка Ру. Пока что не планирую научиться писать расширения. Думаю, копаться интересно в The Extra Dimension https://addons.mozilla.org/en-US/firefox/addon/12296

Отсутствует

 

№91520-07-2009 12:25:58

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.0

Re: Custom Buttons

Хотелось бы посредством Custom Buttons привязать к портабельному фоксу портабельный менеджер загрузки (например Orbit Downloader). Мысль такая: папка PortableOrbitdownloader находится в папке FirefoxPortable, при перетаскивании ссылки на кнопку должен запускаться орбит и начинать закачку, нажатие ЛКМ на кнопку просто запускает орбит. Путь к менеджеру загрузки высчитывается относительно папки с профилем ФФ. Возможно ли реализовать подобное?

Орбит+portable можно качнуть тут: _http://rapidshare.com/files/253833769/OrbitDownloaderSetup.rar

Отредактировано 3Jlou (20-07-2009 12:30:30)

Отсутствует

 

№91620-07-2009 15:55:32

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Custom Buttons

3Jlou

3Jlou пишет

при перетаскивании ссылки на кнопку должен запускаться орбит и начинать закачку

Мне не удалось найти ключа командной строки для Orbit, который бы указывал ему начинать закачку сразу же, без показа диалогового окна. (Да и вообще никаких ключей командной строки не нашел).
Все остальное:
В раздел "Инициализация":

Выделить код

Код:

var profileDir = Components.classes["@mozilla.org/file/directory_service;1"]
    .getService(Components.interfaces.nsIProperties)
    .get("ProfD", Components.interfaces.nsILocalFile)
    .path;
var path = profileDir + "\\orbit\\orbitdm.exe";

this. runOrbit = function (url)
{
	var file = Components. classes["@mozilla.org/file/local;1"].
		   createInstance (Components.interfaces.nsILocalFile);
	var process = Components. classes ["@mozilla.org/process/util;1"].
		      createInstance (Components. interfaces. nsIProcess);
	file. initWithPath (path);
	process. init (file);
	if (!this. pid)
		this. pid = [];
	this. pid. push (process. run (false, url && [url]|| null, url && 1 || 0));
};

this. handleDragOver = function (event)
{
    var dt = event. dataTransfer;
    var url = dt. mozGetDataAt ("text/plain", 0);
    if (!url)
        return;
    event. preventDefault ();
    event. stopPropagation ();
    return dt. effectAllowed = dt. dropEffect = "link";
}

this. handleDrop = function (event)
{
    var dt = event. dataTransfer;
    var url = dt. mozGetDataAt ("text/plain", 0);
    if (url)
    	this. runOrbit (url);
};

this. setAttribute ("ondragdrop", "return this. handleDrop (event);");
this. setAttribute ("ondragover", "return this. handleDragOver (event);");

В раздел "Код":

Выделить код

Код:

this. runOrbit ("");

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№91720-07-2009 16:59:46

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.5

Re: Custom Buttons

Anton, огромное спасибо, то что надо, всё работает,но только при передаче ссылки напрямую orbitdm.exe, если же прописать в коде путь к лоадеру, то "лодырь" не передает ссылку орбиту, так что придётся отказаться от портабельной версии Орбита, попробую Download Master, он вроде без кривых лодырей портабится

--------------------------------------------------------

позволю себе запостить ещё 1 просьбу: пользую кнопку, открывающую в нижней панели всякую всячину (дополнения, журнал, загрузки и т.д...), работала на лисе 3.0.10 и Custom Buttons 0.0.3.9, после обновления лиса до 3.5.1 и CB 0.0.4.3, работать перестала - открывает пустую панель, поправьте пожалуйста:

Выделить код

Код:

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%0D%0A%20%20%3Cname%3E%u041D%u0438%u0436%u043D%u044F%u044F%20%u043F%u0430%u043D%u0435%u043B%u044C%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABxUlEQVR4XqWRP2oVURSHvztzXyZg/ENiZ2NjOsUtCHYuQndh4QIs3YCbsLBRwQUIgpViIQQFQdTE5M2bNzPnj+cy7zGFgRT+4OM7d5hzONybbj89enVwrbkngzO0wtBpEF7N9bgOr5SxG5HesF5wWePd0dt0//nP9d3D/ebkBJan0LZwVhwsC2ewCrpgHWdrAQcMaF/2eX83jbf2aE6BdRNcDq5Ctw534dXGhRaGHsyhwvn8IY/58MB5dAfcAcK2MYDPtRmoGmqKidMs4OGTilwDi4o5NefG3RFxzILsNDXkysmYclFKk4iFDdVpSAWohvWCfndH1cIW3g5RrOBGFjF+LwcS6fy1tWBTg3kxGl7UMIqSv/5oefbiGHX+SUrz0Lmciku7Fcetkm9c3+Xxg5uMNk9wKxjmHiZsQVgddwvgyo7x7s1Hcq5gr6mYA5ijmhDV0oSaIhIm8Onb2AcG2efdcWd704EhYrgXl/OMmYNPVME2mG1/sOLtC2ybwrZxYIYDuQ5Nceo6SAZiaA6JYmlaXcxY4NMTVrCTy0sk8uv3v+Tb9z/Sr0ZkEKQfkHEMK1o8FAQVAQdnSl0lPn05keTu/E/+ApLnoYXyGb2zAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.bottomPanel%20%3D%20function%28aURL%29%20%7B%0A%20%20var%20prefBranch%20%3D%20%22custombuttons.bottomPanel.%22%0A%0A%20%20if%28%21aURL%20%26%26%20aURL%20%21%3D%20%22%22%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20aURL%20%3D%20gPrefService.getCharPref%28prefBranch%20+%20%22url%22%29%3B%0A%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20aURL%20%3D%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20if%28aURL%20%3D%3D%20%22%22%29%20return%3B%0A%0A%20%20if%28aURL%20%3D%3D%20gURLBar.value%20%26%26%20%21aURL.match%28/%5E%5Cw+%3F%5C%3A/%29%29%20aURL%20%3D%20%22http%3A//%22%20+%20aURL%3B%0A%0A%20%20var%20panelID%20%3D%20%22bottom-panel%22%3B%0A%20%20var%20gPanel%20%3D%20document.getElementById%28panelID%29%3B%0A%20%20var%20height%3B%0A%20%20try%20%7B%0A%20%20%20%20height%20%3D%20gPrefService.getIntPref%28prefBranch%20+%20%22height%22%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20height%20%3D%20300%3B%0A%20%20%7D%0A%0A%20%20if%28gPanel%29%20%7B%0A%0A%20%20%20%20var%20src%20%3D%20gPanel.firstChild.nextSibling.getAttribute%28%22src%22%29%3B%0A%20%20%20%20if%28aURL%20%21%3D%20src%29%20%7B%0A%20%20%20%20%20%20gPanel.firstChild.nextSibling.setAttribute%28%22src%22%2C%20aURL%29%3B%0A%20%20%20%20%20%20//gPanel.firstChild.nextSibling.loadURI%28aURL%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20gPrefService.setIntPref%28prefBranch%20+%20%22height%22%2C%20gPanel.height%29%3B%0A%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel.previousSibling%29%3B%0A%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%7D%20else%20%7B%0A%0A%20%20%20%20var%20appContent%20%3D%20document.getElementById%28%22appcontent%22%29%3B%0A%0A%20%20%20%20var%20spl%20%3D%20appContent.appendChild%28document.createElement%28%22splitter%22%29%29%3B%0A%20%20%20%20%20%20%20%20spl.setAttribute%28%22collapse%22%2C%20%22after%22%29%3B%0A%20%20%20%20%20%20%20%20spl.style.border%20%3D%20%22none%22%3B%0A%20%20%20%20%20%20%20%20spl.style.borderTop%20%3D%20%222px%20solid%20threedhighlight%22%3B%0A%20%20%20%20%20%20%20%20spl.setAttribute%28%22onclick%22%2C%20%22this.setAttribute%28%27state%27%2C%20%27%27%29%3B%22%29%3B%0A%0A%20%20%20%20var%20box%20%3D%20appContent.appendChild%28document.createElement%28%22hbox%22%29%29%3B%0A%20%20%20%20%20%20%20%20box.id%20%3D%20panelID%3B%0A%20%20%20%20%20%20%20%20box.height%20%3D%20height%3B%0A%20%20%20%20%20%20%20%20box.orient%20%3D%20%22vertical%22%3B%0A%0A%20%20%20%20var%20tbr%20%3D%20box.appendChild%28document.createElement%28%22toolbar%22%29%29%3B%0A%20%20%20%20%20%20%20%20tbr.setAttribute%28%22fullscreentoolbar%22%2C%20true%29%3B%0A%0A%20%20%20%20var%20spr%20%3D%20tbr.appendChild%28document.createElement%28%22spacer%22%29%29%3B%0A%20%20%20%20%20%20%20%20spr.setAttribute%28%22flex%22%2C%201%29%3B%0A%0A%20%20%20%20var%20btn%20%3D%20tbr.appendChild%28document.createElement%28%22toolbarbutton%22%29%29%3B%0A%20%20%20%20%20%20%20%20btn.style.listStyleImage%20%3D%20%22url%28chrome%3A//global/skin/icons/Minimize.gif%29%22%3B%0A%20%20%20%20%20%20%20%20btn.minimize%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20gPanel%20%3D%20document.getElementById%28%22bottom-panel%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.previousSibling.setAttribute%28%22state%22%2C%20%22collapsed%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20btn.setAttribute%28%22oncommand%22%2C%20%22this.minimize%28%29%22%29%3B%0A%0A%20%20%20%20var%20btc%20%3D%20tbr.appendChild%28document.createElement%28%22toolbarbutton%22%29%29%3B%0A%20%20%20%20%20%20%20%20btc.className%20%3D%20%22tabs-closebutton%22%3B%0A%20%20%20%20%20%20%20%20btc.closePanel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20gPanel%20%3D%20document.getElementById%28%22bottom-panel%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPrefService.setIntPref%28prefBranch%20+%20%22height%22%2C%20gPanel.height%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel.previousSibling%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20btc.setAttribute%28%22oncommand%22%2C%20%22this.closePanel%28%29%22%29%3B%0A%0A%20%20%20%20var%20ifr%20%3D%20box.appendChild%28document.createElement%28%22browser%22%29%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22type%22%2C%20%22content%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22flex%22%2C%201%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22src%22%2C%20aURL%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22tooltip%22%2C%20%22aHTMLTooltip%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22onclick%22%2C%20%22return%20contentAreaClick%28event%2C%20true%29%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22autocompletepopup%22%2C%20%22PopupAutoComplete%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22contextmenu%22%2C%20%22contentAreaContextMenu%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22contentcontextmenu%22%2C%20%22contentAreaContextMenu%22%29%3B%0A%20%20%7D%0A%0A%20%20gPrefService.setCharPref%28prefBranch%20+%20%22url%22%2C%20aURL%29%3B%0A%0A%7D%20%20%0A%0A%0Athis.getBookmark%20%3D%20function%28%29%20%7B%0A%20%20var%20appInfo%20%3D%20Components.classes%5B%22@mozilla.org/xre/app-info%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIXULAppInfo%29%3B%0A%20%20var%20isFx2%20%3D%20appInfo.version%20%3D%3D%20%222.0%22%3B%0A%20%20var%20url%20%3D%20%22%22%3B%0A%20%20var%20rv%20%3D%20isFx2%20%3F%20%7B%20urls%3A%20null%2C%20names%3A%20null%20%7D%20%3A%20%7B%20url%3A%20null%20%7D%3B%0A%20%20openDialog%28%22chrome%3A//browser/content/places/places.xul%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%2C%20%22modal%2C%20dialog%3Dno%2C%20minimizable%3Dno%2C%20centerscreen%2C%20resizable%22%2C%20rv%29%3B%0A%0A%20%20if%20%28rv.urls%20%26%26%20rv.names%29%20url%20%3D%20rv.urls%5B0%5D%0A%20%20else%20if%20%28rv.url%29%20%7B%0A%20%20%20%20url%20%3D%20rv.url%3B%0A%20%20%20%20if%20%28url.indexOf%28%22%7C%22%29%20%3E%200%29%0A%20%20%20%20%20%20url%20%3D%20url.split%28%22%7C%22%29%5B0%5D%3B%0A%20%20%7D%0A%20%20return%20url%3B%0A%7D%0A%0A%0Athis.getFile%20%3D%20function%28%29%20%7B%0A%20%20try%20%7B%0A%20%20%20%20const%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0A%20%20%20%20var%20fp%20%3D%20Components.classes%5B%27@mozilla.org/filepicker%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28nsIFilePicker%29%3B%0A%20%20%20%20fp.init%28window%2C%20gNavigatorBundle.getString%28%22openFile%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.modeOpen%29%3B%0A%20%20%20%20fp.appendFilters%28nsIFilePicker.filterAll%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterText%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterImages%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterXML%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterHTML%29%3B%0A%20%20%20%20if%28fp.show%28%29%20%3D%3D%20nsIFilePicker.returnOK%29%0A%20%20%20%20%20%20return%20fp.fileURL.spec%3B%0A%20%20%20%20else%20return%20%22%22%3B%0A%20%20%7D%20catch%20%28ex%29%20%7B%0A%20%20%7D%0A%7D%0A%0A%0Athis.popupShowing%20%3D%20function%28aNode%29%20%7B%0A%20%20var%20ioService%20%3D%20Components.classes%5B%22@mozilla.org/network/io-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIIOService%29%3B%0A%20%20try%20%7B%0A%20%20%20%20var%20pasteURL%20%3D%20ioService.newURI%28readFromClipboard%28%29%2C%20null%2C%20null%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%7D%0A%20%20if%28pasteURL%29%20aNode.lastChild.tooltipText%20%3D%20readFromClipboard%28%29%3B%0A%20%20aNode.lastChild.setAttribute%28%22disabled%22%2C%20%21pasteURL%20%3F%20true%20%3A%20false%29%3B%0A%7D%0A%0A%0Afunction%20addMenuitem%28aLabel%2C%20aURL%2C%20aNode%2C%20aObjString%29%20%7B%0A%20%20var%20mItem%20%3D%20aNode.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20mItem.setAttribute%28%22label%22%2C%20aLabel%29%3B%0A%20%20mItem.setAttribute%28%22oncommand%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aObjString%20+%20%22.bottomPanel%28%27%22%20+%20aURL%20+%20%22%27%29%3B%22%29%3B%0A%7D%0A%0A%0Afunction%20addSeparator%28aNode%2C%20aNum%29%20%7B%0A%20%20var%20separator%20%3D%20aNode.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%20%20separator.id%20%3D%20%22bottom-panel-button-separator%22%20+%20aNum%3B%0A%7D%0A%0Avar%20mPopup%20%3D%20document.createElement%28%22menupopup%22%29%3B%0AmPopup.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0AmPopup.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.popupShowing%28this%29%22%29%3B%0A%0Avar%20smPopup%20%3D%20document.createElement%28%22menupopup%22%29%3B%0AsmPopup.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0Avar%20subMenu%20%3D%20document.createElement%28%22menu%22%29%3B%0AsubMenu.appendChild%28smPopup%29%3B%0AsubMenu.setAttribute%28%22label%22%2C%20%22%u0418%u0437%20%u0431%u043E%u043A%u043E%u0432%u043E%u0439%20%u043F%u0430%u043D%u0435%u043B%u0438%22%29%3B%0A%0Avar%20objString%20%3D%20%22this.parentNode.parentNode.parentNode.parentNode%22%3B%0Avar%20viewSidebarMenu%20%3D%20document.getElementById%28%22viewSidebarMenu%22%29%3B%0Avar%20sidebarItems%20%3D%20viewSidebarMenu.childNodes%3B%0Afor%28var%20i%20%3D%200%3B%20i%20%3C%20sidebarItems.length%3B%20i++%29%20%7B%0A%20%20var%20sidebarItem%20%3D%20sidebarItems%5Bi%5D%3B%0A%20%20if%28%28sidebarItem.hasAttributes%28%22sidebarurl%22%29%20%26%26%0A%20%20%20%20%20%20sidebarItem.getAttribute%28%22sidebarurl%22%29%20%21%3D%20%22%22%29%20%26%26%0A%20%20%20%20%20%28sidebarItem.hasAttributes%28%22label%22%29%20%26%26%0A%20%20%20%20%20%20sidebarItem.getAttribute%28%22label%22%29%20%21%3D%20%22%22%29%29%0A%20%20%20%20addMenuitem%28sidebarItem.getAttribute%28%22label%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sidebarItem.getAttribute%28%22sidebarurl%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20smPopup%2C%20objString%29%3B%0A%7D%0A%0AobjString%20%3D%20%22this.parentNode.parentNode%22%3B%0AaddMenuitem%28%22about%3Aconfig%22%2C%20%22about%3Aconfig%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u041A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%22%2C%20%22chrome%3A//global/content/console.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%22%2C%20%22chrome%3A//browser/content/places/places.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20Cookies%22%2C%20%22chrome%3A//browser/content/preferences/cookies.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0414%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%22%2C%20%22chrome%3A//mozapps/content/extensions/extensions.xul%3Ftype%3Dextensions%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%2C%20%22chrome%3A//mozapps/content/downloads/downloads.xul%22%2C%20mPopup%2C%20objString%29%3B%0A%0A%0A//DownTHEMall%0Aif%20%28typeof%20DTA_ContextOverlay%20%3D%3D%20%22object%22%29%0A%20%20addMenuitem%28%22DownTHEMall%22%2C%20%22chrome%3A//dta/content/dta/manager.xul%22%2C%20mPopup%2C%20objString%29%3B%0A%0A%0A//Stylish%0Aif%20%28typeof%20stylishCommon%20%3D%3D%20%22object%22%29%20%7B%0A%20%20if%20%28typeof%20stylishCommonOverlay%20%3D%3D%20%22object%22%29%20//if%20Stylish%200.5%0A%20%20%20%20addMenuitem%28%22Stylish%20Manager%22%2C%20%22chrome%3A//stylish/content/manage.xul%22%2C%20mPopup%2C%20objString%29%3B%0A%20%20else%0A%20%20%20%20addMenuitem%28%22Stylish%20Manager%22%2C%20%22chrome%3A//stylish/content/stylish.xul%22%2C%20mPopup%2C%20objString%29%3B%0A%7D%0A%0A%0A//MR%20Tech%20Local%20Install%20-%20My%20Config%0Aif%20%28typeof%20Local_Install%20%3D%3D%20%22object%22%29%0A%20%20addMenuitem%28%22%u041C%u043E%u044F%20%u043A%u043E%u043D%u0444%u0438%u0433%u0443%u0440%u0430%u0446%u0438%u044F%22%2C%20%22chrome%3A//local_install/content/infolister.xul%22%2C%20mPopup%2C%20objString%29%3B%0A%0A%0A//QuickNote%0Aif%20%28typeof%20QuickNote_openQuickNote%20%3D%3D%20%22function%22%29%0A%20%20addMenuitem%28%22QuickNote%22%2C%20%22chrome%3A//quicknote/content/quicknote.xhtml%22%2C%20mPopup%2C%20objString%29%3B%0A%0A%0A//ChromeList%0Aif%20%28typeof%20startChromeEnumerator%20%3D%3D%20%22function%22%29%0A%20%20addMenuitem%28%22%u041F%u0440%u043E%u0441%u043C%u043E%u0442%u0440%20Chrome%22%2C%20%22chrome%3A//chromelist/content/chromelist.xul%22%2C%20mPopup%2C%20objString%29%3B%0A%0A//ChatZilla%0Aif%20%28typeof%20toIRC%20%3D%3D%20%22function%22%29%0A%20%20addMenuitem%28%22ChatZilla%22%2C%20%22chrome%3A//chatzilla/content/chatzilla.xul%22%2C%20mPopup%2C%20objString%29%3B%0A%0A%0AaddSeparator%28mPopup%2C%200%29%3B%0A%0Avar%20homePages%20%3D%20gHomeButton.getHomePage%28%29.split%28%22%7C%22%29%3B%0Avar%20homePage%20%3D%20homePages%5B0%5D%3B%0A%0AaddMenuitem%28%22%u0414%u043E%u043C%u0430%u0448%u043D%u044F%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22%2C%20homePage%2C%20mPopup%2C%20objString%29%3B%0A%0AaddMenuitem%28%22%u0422%u0435%u043A%u0443%u0449%u0430%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22%2C%20%22%27%20+%20content.location.href%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0418%u0441%u0445%u043E%u0434%u043D%u044B%u0439%20%u043A%u043E%u0434%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%22%2C%20%22view-source%3A%27%20+%20content.location.href%20+%27%22%2C%20mPopup%2C%20objString%29%3B%0A%0AaddSeparator%28mPopup%2C%201%29%3B%0A%0AmPopup.appendChild%28subMenu%29%3B%0AaddMenuitem%28%22%u0418%u0437%20%u0430%u0434%u0440%u0435%u0441%u043D%u043E%u0439%20%u0441%u0442%u0440%u043E%u043A%u0438%22%2C%20%22%27%20+%20gURLBar.value%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0A%0A/*%20addMenuitem%28%22%u0418%u0437%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%2C%20%22%27%20+%20this.parentNode.parentNode.getBookmark%28%29%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%20*/%0AaddMenuitem%28%22%u0418%u0437%20%u0444%u0430%u0439%u043B%u0430%22%2C%20%22%27%20+%20this.parentNode.parentNode.getFile%28%29%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0418%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%22%2C%20%22%27%20+%20readFromClipboard%28%29%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0A%0Athis.appendChild%28mPopup%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%0A%0A%0Athis.style.opacity%20%3D%20%27.65%27%3B%0Athis.setAttribute%28%27onmouseover%27%2C%20%27custombuttons.ButtonBrt%28event%29%3B%27%20%29%3B%0Athis.setAttribute%28%27onmouseout%27%2C%20%27custombuttons.ButtonDim%28event%29%3B%27%20%29%3B%0A%0A%0A//%20this.tooltipText%20+%3D%20%27%27%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.bottomPanel%28%29%3B%0A%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5Bnull%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

Отредактировано 3Jlou (20-07-2009 17:10:43)

Отсутствует

 

№91820-07-2009 17:26:30

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Custom Buttons

3Jlou пишет

позволю себе запостить ещё 1 просьбу: пользую кнопку, открывающую в нижней панели всякую всячину (дополнения, журнал, загрузки и т.д...), работала на лисе 3.0.10 и Custom Buttons 0.0.3.9, после обновления лиса до 3.5.1 и CB 0.0.4.3, работать перестала - открывает пустую панель, поправьте пожалуйста:

Firefox 3.5.1, Custom Buttons 0.0.4.3 - из downloads, т. е., тот, который выгружался для общего пользования на amo и mozdev - кнопка работает.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№91920-07-2009 17:34:23

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.5

Re: Custom Buttons

Anton, спасибо, понял, буду искать косяк у себя

P.S. Выяснил причину неработающей кнопки - перестает работать после установки No Script 1.9.5, пытаюсь их "подружить". Может есть какие соображения?

Отредактировано 3Jlou (21-07-2009 11:47:37)

Отсутствует

 

№92022-07-2009 13:48:44

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 689
UA: Foxware 0.0

Re: Custom Buttons

Привет спецы.Вы как то помогли мне,с кнопкой закрытия вкладки.Сейчас очень нужна анлогичная,но для закрытия окна.То есть всплыло окно,которое необходимо закрыть.В частности при выставлении новости,просмотр идет через отдельное окно а не вкладку.Надеюсь что более менее обьяснил суть проблемы :blush:

Отредактировано vv07 (22-07-2009 13:49:20)

Отсутствует

 

№92122-07-2009 14:26:35

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Custom Buttons

vv07
Всплывающие окна закрывать не умею, извините.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№92224-07-2009 12:52:12

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

по поводу кнопки videosafer: вот код

loadURI ("javascript:var%20s=document.createElement('script');s.src='http://videosaver.ru/vs.js?nc='+Math.random();document.body.appendChild(s);void(0);");

Вопрос: а как сделать чтобы вместо этого окношка videosafer'a сразу переправляло на сайт скачки? (ну типо автоматическое нажатие кнопки ОК. а то Вконтакте эта пенлька почемуто ЗА видяху уезжает и так не нажать


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№92324-07-2009 20:49:46

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Custom Buttons

Najlus
Попробуй

Выделить код

Код:

var doc = getBrowser (). contentDocument;
var url = 'http://cs.videosaver.ru/get/?url=' + escape (doc. location);
var ps = "x=78&y=89&VideoSaverDoc=" + escape (doc. body. innerHTML);
var ss = Components. classes ["@mozilla.org/io/string-input-stream;1"].
	 createInstance (Components. interfaces. nsIStringInputStream);
if ("data" in ss)
	ss. data = ps;
else
	ss. setData (ps, ps. length);

var pd = Components. classes ["@mozilla.org/network/mime-input-stream;1"].
	 createInstance (Components. interfaces. nsIMIMEInputStream);
pd. addHeader("Content-Type", "application/x-www-form-urlencoded");
pd. addContentLength = true;
pd. setData (ss);
loadURI (url, makeURI (doc. location. href), pd, false);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№92425-07-2009 11:02:12

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

Спасибо =) а сделать автоматическую скачку и возврат к странице с видео никак? =))))))


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№92525-07-2009 12:00:50

razoo
Участник
 
Группа: Members
Зарегистрирован: 23-07-2009
Сообщений: 48
UA: Foxware 0.0

Re: Custom Buttons

Здоровья всем.
Больше 4 лет пользуюсь ФФ, но только сейчас решил попробовать custom buttons. Из CB и CB2, выбрал первый.
Кодинга, к сожалению, не знаю. Поэтому извиняюсь за массу и глупость вопросов :)

Вопросы по конкретным кодам.
1. Сделал кнопку для "Block Site" https://addons.mozilla.org/en-US/firefox/addon/3145 с вашим кодом (пост #786 http://forum.mozilla-russia.org/viewtop … 88#p305388).
Спасибо, отличная вещь. Но можно ли усовершенствовать код, чтобы плагин блокировал весь сайт, а не только открытую страничку (пока приходится вручную добавлять "*" после доменной зоны нежелательного портала). А еще лучше, если бы, рядом была стрелка с выпадающим меню, где была бы возможность определить до какого уровня блокировать, а нажатие на саму кнопку - блокировало бы весь сайт целиком.

2. Использую расширение "Brief" https://addons.mozilla.org/en-US/firefox/addon/4578, как RSS агрегатор. Хотелось бы чтобы открывающая его кнопка одновременно закрывала боковую панель AiOS (но не блокировала). Просто у Брифа есть собственная боковая панель, которая в AiOS не интегрируется (и ненужно). Восстановление панели после закрытия Брифа тоже не требуется

3. Не получилось сделать работающую кнопку для добавления текущей страницы в проект Offline Explorerа. Родное метапродуктовское расширение позволяет это сделать только из контекстного меню. Самодельная кнопка запускает Оффлайн Эксплорер и создает пустой проект, а url текущей страницы в него не вставляет.
Тупо использовал код, вытащенный MenuManipulator из контекстного:

Выделить код

Код:

MPContext.OEDownload(event);

Как правильно?

Добавлено 25-07-2009 12:03:47
Вопросы по визуальному отображению кнопок.
Почему стандартные Файерфоксовские "вперед-назад" onmouseover "подсвечиваются" строго по форме рисунка кнопки, а все остальные (включая другие стандартные) - прямоугольным боксом?
96df64f78f80.gif
Можно ли это реализовать в CB для других кнопок?
Можно ли как-то регулировать позицию рисунка на кнопке?
Например:
Кнопка «Snap Back»:
5768b53d42ff.png
Я бы хотел ее прижать к основным стрелкам – вот так:
990eb19af99f.png
Как убрать вот это поле справа?
9c6c2dff320e.png

Добавлено 25-07-2009 12:04:31
Firefox 3.0.11, Win XP
Заранее благодарен за все разумные ответы ))

Отредактировано razoo (25-07-2009 13:33:49)

Отсутствует

 

Board footer

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