Антон, возможно слишком сложно, но было бы полезно. Нужна кнопка: при перетаскивании на неё вкладки сама вкладка закрывается, а в кнопке, в выпадающем списке появляется закладка с названием из заголовка. Удаляется закладка правым щелчком мыши. При открытии закладки (как в текущей, так и в новой вкладке) соответствующая закладка удаляется из списка кнопки.
Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями
Отсутствует
Najlus
В качестве возможной альтернативы можно посмотреть на
Link Pad и Netscape Link Pad
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Najlus В качестве возможной альтернативы можно посмотреть наLink Pad и Netscape Link Pad
Не айс (с).
Во первых: иконка висит в трее, а тянуть вкладку на эту маленькую кнопочку не сказать чтоб удобно (ибо та, которая на тулбар идёт напрочь отказывается добавлять в закладки).
Во вторых: список открывается в боковой панели и без иконок.
А в третьих: добавленная вкладка не закрывается
Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями
Отсутствует
Najlus
Если надо сохранять "закладки" между перезапусками браузера, то я - пас.
Если достаточно хранения в пределах сесси - сделаю.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Ну тогда 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)
Отсутствует
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ентов на части порвет !!!
Отсутствует
В раздел "Инициализация"...
Спасибо то, что надо
Если надо сохранять "закладки" между перезапусками браузера, то я - пас.
Жаль
Понимаю конечно что слишком много, но вы можете сделать подобную кнопку для расширения etscape Link Pad, чтоб и между сессиями сохранялось (а то малоли там сбой или ещё что)
Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями
Отсутствует
Поподробней, пожалуйста - я с темами и стилями как пользователь дела совсем не имею.
С удовольствием. Есть аддон 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)
Отсутствует
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ентов на части порвет !!!
Отсутствует
Есть аддон Stylish.....Есть аддоны для модификации конкретных тем....
Al_H, Anton
может будет интересно покопаться ещё в AnyColor и Настройки Классической Компактной темы
Отредактировано Крошка Ру (19-07-2009 22:26:11)
Отсутствует
Код в раздел "Инициализация", в первой строке можно поправить путь к файлу, где будут храниться "закладки".
На правах развлекательства:
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*/)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
NajlusТак:Код...
пойдёт? Код в раздел "Инициализация", в первой строке можно поправить путь к файлу, где будут храниться "закладки".
Спасибо огромное
На правах развлекательства:Код...
+ путь относительно профиля
+ иконки у «закладок»
+ ссылки во всплывающих подсказках
+ переключение на открываемую вкладку (см. /*load in background*/)
Тоже огромное спасибо особенно за иконки Правда переключение на открываемую вкладку отключил, но всёравно спасибо
Вам памятник ставить нужно
Надо будет как нить разобраться и сделать из этой кнопки расширение, думаю многим будет полезно.
Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями
Отсутствует
Спасибо, Крошка Ру. Пока что не планирую научиться писать расширения. Думаю, копаться интересно в The Extra Dimension https://addons.mozilla.org/en-US/firefox/addon/12296
Отсутствует
Хотелось бы посредством Custom Buttons привязать к портабельному фоксу портабельный менеджер загрузки (например Orbit Downloader). Мысль такая: папка PortableOrbitdownloader находится в папке FirefoxPortable, при перетаскивании ссылки на кнопку должен запускаться орбит и начинать закачку, нажатие ЛКМ на кнопку просто запускает орбит. Путь к менеджеру загрузки высчитывается относительно папки с профилем ФФ. Возможно ли реализовать подобное?
Орбит+portable можно качнуть тут: _http://rapidshare.com/files/253833769/OrbitDownloaderSetup.rar
Отредактировано 3Jlou (20-07-2009 12:30:30)
Отсутствует
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);");
В раздел "Код":
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
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)
Отсутствует
позволю себе запостить ещё 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ентов на части порвет !!!
Отсутствует
Anton, спасибо, понял, буду искать косяк у себя
P.S. Выяснил причину неработающей кнопки - перестает работать после установки No Script 1.9.5, пытаюсь их "подружить". Может есть какие соображения?
Отредактировано 3Jlou (21-07-2009 11:47:37)
Отсутствует
Привет спецы.Вы как то помогли мне,с кнопкой закрытия вкладки.Сейчас очень нужна анлогичная,но для закрытия окна.То есть всплыло окно,которое необходимо закрыть.В частности при выставлении новости,просмотр идет через отдельное окно а не вкладку.Надеюсь что более менее обьяснил суть проблемы
Отредактировано vv07 (22-07-2009 13:49:20)
Отсутствует
по поводу кнопки 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 на русском языке с пояснениями и рекомендациями
Отсутствует
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ентов на части порвет !!!
Отсутствует
Спасибо а сделать автоматическую скачку и возврат к странице с видео никак? )))))
Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями
Отсутствует
Здоровья всем.
Больше 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 из контекстного:
Как правильно?
Добавлено 25-07-2009 12:03:47
Вопросы по визуальному отображению кнопок.
Почему стандартные Файерфоксовские "вперед-назад" onmouseover "подсвечиваются" строго по форме рисунка кнопки, а все остальные (включая другие стандартные) - прямоугольным боксом?
Можно ли это реализовать в CB для других кнопок?
Можно ли как-то регулировать позицию рисунка на кнопке?
Например:
Кнопка «Snap Back»:
Я бы хотел ее прижать к основным стрелкам – вот так:
Как убрать вот это поле справа?
Добавлено 25-07-2009 12:04:31
Firefox 3.0.11, Win XP
Заранее благодарен за все разумные ответы ))
Отредактировано razoo (25-07-2009 13:33:49)
Отсутствует