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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№417625-06-2012 03:46:44

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

skynet281978 пишет

Memory Monitor
как сделать чтобы в адресной строке отображение памяти было крупнее, а то мелкий почему то у меня шрифт

В userChrome.css + рестарт

Выделить код

Код:

#ucjs_zoom_statuslabel{font-size: 100%; /* Размер шрифта в процентах */}

Или попробуй в коде Memory Monitor после

Выделить код

Код:

var memoryPanel = document.getElementById("MemoryDisplay");

добавить

Выделить код

Код:

memoryPanel.style.fontSize = "100%";

+ рестарт

Отредактировано bunda1 (25-06-2012 03:56:20)

Отсутствует

 

№417725-06-2012 05:13:24

skynet281978
Участник
 
Группа: Members
Зарегистрирован: 09-03-2011
Сообщений: 508
UA: Firefox 13.0

Re: Custom Buttons

bunda1 в одном из стилей для стайлиш мешало:

скрытый текст
#urlbar-icons {
  font-size: .9em !important;
}

спасибо за кнопочку.
Интересно, что в моей фаерфокс я прописывал эти строчки:
скрытый текст
#MemoryDisplay{
-moz-appearance: none !important;
border: 0px !important;}

#MemoryDisplay{
-moz-appearance: none !important;
border: 0px !important;
padding:0px !important;
margin-right:-3px !important;
margin-left:-3px !important;
}


и всё заработало.
А в другой фаерфокс с установленным только Custom Buttons и кнопкой Memory Monitor
мне не понадобилось прописывать стили.
Не понял почему так.

Отсутствует

 

№417825-06-2012 19:21:03

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 16.0

Re: Custom Buttons

Скажите, пожалуйста, есть ли какой-то способ сохранять данные из кода кнопки между сессиями?

1. Использовать Preferences, как это делают расширения, не получится: из кода кнопки можно только получить или изменить значение, но не создать новый ключ (создавать можно или вручную из about:config, или в файлах настроек расширений, или через user.js, но всё это не подходит).
2. Использовать простой файл или базу данных слишком сложно.
3. Использовать Local storage тоже не получается, потому кнопка не связана со страницами браузера (с объектом content), она лишь посылает и получает XMLHttpRequest, а у документов этого типа нет объекта window (defaultView), к которому был бы привязан Local storage.

Есть ли ещё какие-то способы хранить и восстанавливать данные?

Отсутствует

 

№417925-06-2012 19:24:30

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 14.0

Re: Custom Buttons

homo_nudus
В готовых кнопках есть кнопки которые именно создают значения в about:config, посмотрите например кнопку Translate, вот ссылка на кнопку №93

Кстати, bunda1 можете исправить эту кнопку? Так как в ней используется GlobalStorage, видимо для настройки кнопки, но так как Globalstorage убрали с 13-ой версии, то и настройки в контекстном меню кнопки не отображаются и кнопка становится замыленной когда ее перетаскиваешь на панель, как будто она неактивна. Замечу, что кнопка тем не менее работает и переводит страницы, но баги такие присутствуют.

Отредактировано Kamui (25-06-2012 19:32:42)

Отсутствует

 

№418025-06-2012 20:09:40

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 16.0

Re: Custom Buttons

Kamui
okkamas_knife
Большое спасибо. Не думал, что set...Pref не только изменяет значения, но и создаёт ключи при их отсутствии.
Кстати, удивился, что у nsIPrefService тоже есть методы set...Pref, на MDN они значатся только в nsIPrefBranch.

Отсутствует

 

№418125-06-2012 20:21:31

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

Re: Custom Buttons

homo_nudus
Там все хитро, можно запросить интерфейс явно через QueryInterface(), можно не очень явно через проверку на instanceof, а можно вообще так (запускать из консоли ошибок):

Выделить код

Код:

var ps = Components.classes["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefService);
alert(ps + " " + ("setBoolPref" in ps));
var test = Components.classes["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefBranch);
alert(test + " " + ("setBoolPref" in test));
alert(ps + " " + ("setBoolPref" in ps));

Кстати, если получить getDefaultBranch(), то выставляться будут настройки по умолчанию. (Такой вот костыль для restartless расширений. :))


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

Отсутствует

 

№418225-06-2012 22:26:22

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Kamui пишет

Кстати, bunda1 можете исправить эту кнопку? Так как в ней используется GlobalStorage, видимо для настройки кнопки, но так как Globalstorage убрали с 13-ой версии, то и настройки в контекстном меню кнопки не отображаются и кнопка становится замыленной когда ее перетаскиваешь на панель, как будто она неактивна. Замечу, что кнопка тем не менее работает и переводит страницы, но баги такие присутствуют.

Завтра исправлю.

Отсутствует

 

№418325-06-2012 23:45:57

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Может кто знает как перевести в переводчике Google https страници а то не переводит и пишет Извините, этот URL неправильный.

Отсутствует

 

№418426-06-2012 00:45:40

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 16.0

Re: Custom Buttons

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

Отсутствует

 

№418526-06-2012 01:23:37

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 16.0

Re: Custom Buttons

Кстати, оказывается, не обязательно вызывать ошибку, чтобы проверить существование ключа. Поскольку из кнопки можно создать только пользовательскую настройку, существование можно проверять методом prefHasUserValue. На MDN говоритсяIn particular, when no default value exists for a preference, prefHasUserValue() indicates whether a preference exists.

В общем, код инициализации ключа может быть такой:

Выделить код

Код:

var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
var prefBranch = prefService.getBranch("cb_storage.");
var supportsString = Components.interfaces.nsISupportsString;

if (!prefBranch.prefHasUserValue("obj_1")) {
    var uStr = Components.classes["@mozilla.org/supports-string;1"].createInstance(supportsString);
    uStr.data = JSON.stringify({"ключ_1": "значение_1", "ключ_2": "значение_2"});
    prefBranch.setComplexValue("obj_1", supportsString, uStr);
    prefService.savePrefFile(null);
}

var obj_1 = JSON.parse(prefBranch.getComplexValue("obj_1", supportsString).data);

alert(obj_1["ключ_2"]);

Ещё раз всем спасибо за помощь.

Отсутствует

 

№418626-06-2012 04:03:07

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

Re: Custom Buttons

Кнопка Открыть в нижней панели -  без выпадающего списка ? Например только "Открыть Загрузки" , Открыть папку..."
                    Отредактировано Крошка Ру (05-12-2011 20:38:21)

Выделить код

Код:

BrowserCustomizeToolbar();

а можно чтобы открывалось в нижней панели ?
                    Отредактировано Крошка Ру (24-06-2012 19:53:08)

....:angel:

Отредактировано Крошка Ру (26-06-2012 04:03:54)

Отсутствует

 

№418726-06-2012 04:14:28

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

Re: Custom Buttons

нет

:cry:

okkamas_knife, а это >

Кнопка Открыть в нижней панели -  без выпадающего списка ? Например только "Открыть Загрузки" , Открыть папку...",

"Настроить..."

Выделить код

Код:

BrowserCustomizeToolbar();

такой шаблончик для кнопочки, чтобы можно было туда подставить то что нужно , без  списка-простыни :angel:

Отредактировано Крошка Ру (26-06-2012 04:19:07)

Отсутствует

 

№418826-06-2012 06:31:15

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 14.0

Re: Custom Buttons

homo_nudus пишет

Кстати, удивился, что у nsIPrefService тоже есть методы set...Pref, на MDN они значатся только в nsIPrefBranch.

Здесь дело в следующем: и nsIPrefService, и nsIPrefBranch запрашиваются у одного и того же компонента с contract id @mozilla.org/preferences-service;1. Как следует из названия компонента, он представляет собой сервис, и реализован в виде singletone - т.е. при вызове getService у него создается единственный экземпляр на текущий контекст вызова. Это означает, что при выполнении

Выделить код

Код:

var ps = Components.classes["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefService);
var test = Components.classes["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefBranch);

несмотря на то, что вроде как у нас две переменные, обе они содержат ссылку на один и тот же экземпляр класса. XPCOM Viewer показывает, что этот класс реализует несколько интерфейсов:
pref-service.png
а одна из особенностей XPCOM-платформы состоит в том, что при успешном запросе интерфейса экземпляр может предоставлять свойства и методы всех успешно запрошенных интерфейсов. Т.е. мы получили ссылку на фактически один и тот же экземпляр, два раза запросили у него интерфейс (nsIPrefService и nsIPrefBranch), в результате экземпляр отдает методы и первого, и второго интерфейса. А интерфейс может быть запрошен и неявно через вызов instanceof: https://developer.mozilla.org/en/Code_s … t_supports, https://developer.mozilla.org/en/JavaSc … instanceof.
Если слегка модифицировать код, приведенный выше Infocatcher'ом вот так:

Выделить код

Код:

var ps=Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService);
var test=Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
Services.console.logStringMessage("ps: "+ps);

то в консоли вы увидите вот такое:

ps: [xpconnect wrapped (nsISupports, nsIPrefService, nsIPrefBranch)]

Добавлено 26-06-2012 06:34:33
Или даже вот так:

Выделить код

Код:

Services.console.logStringMessage("test: "+Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch));

test: [xpconnect wrapped nsIPrefBranch]

и потом

Выделить код

Код:

Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService);
Services.console.logStringMessage("test: "+Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch));

test: [xpconnect wrapped (nsISupports, nsIPrefService, nsIPrefBranch)]

Кстати, про XPCOM Viewer: никто не в курсе, что такое изменилось в 14-й версии Fx, что в этом расширении сломался поиск? Надо бы исправить - без поиска этот вьюер абсолютно нефункционален.

Отредактировано hydrolizer (26-06-2012 06:40:53)

Отсутствует

 

№418926-06-2012 09:47:23

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 16.0

Re: Custom Buttons

hydrolizer
Спасибо.

Отсутствует

 

№419026-06-2012 09:51:54

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

Re: Custom Buttons

homo_nudus
Еще можно проверить наличие через nsIPrefBranch.getPrefType(), там будет одна из констант: https://developer.mozilla.org/en/XPCOM_ … #Constants

homo_nudus пишет

Насколько я понял из опытов, использовать getDefaultBranch вне расширения нет смысла, потому что созданные ключи не сохраняются в файл настроек и не восстанавливаются после перезапуска.

Можно для удобства пользователя создавать значение по умолчанию. Хотя это больше актуально для restartless расширений (из-за бага). С другой стороны, кнопки вполне себе restartless, надо только немного больше повозиться и реализовать onDestroy() для уборки за собой.


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

Отсутствует

 

№419126-06-2012 14:06:00

skynet281978
Участник
 
Группа: Members
Зарегистрирован: 09-03-2011
Сообщений: 508
UA: Firefox 13.0

Re: Custom Buttons

bunda1 пишет

Может кто знает как перевести в переводчике Google https страници а то не переводит и пишет
Извините, этот URL неправильный.

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

Отредактировано skynet281978 (26-06-2012 14:06:29)

Отсутствует

 

№419226-06-2012 18:34:58

questman
Участник
 
Группа: Members
Зарегистрирован: 05-11-2011
Сообщений: 241
UA: Palemoon 12.0

Re: Custom Buttons

Доброго времени суток!
Ребята,вы мне в своё время очень серьёзно помогли за что я безмерно благодарен.
Помогли с кнопкой включения/отключения того или иного джетпака,с кнопкой отключения/включения флеш-плагина,с кнопкой показа/скрытия панели закладок и много ещё с чем.
Вы не могли бы ещё помочь?
Есть ли возможность написать кнопку которая по аналогии включения/отключения джетпака включала/отключала бы тот или иной пользовательский скрипт "Scriptish"?
А то скрипты работающие на конкретных страницах не отображаются в  меню Скриптиша если ты находишься не на них.
Не удобно постоянно заходить в "Пользовательские скрипты" чтобы включить или отключить.Да и скриптов набралось достаточно много что прокрутка тормозит.

Отредактировано questman (26-06-2012 18:36:06)

Отсутствует

 

№419326-06-2012 18:38:40

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

okkamas_knife пишет

Перевести в переводчике Google https страници напрямую никак нельзя, гуглопереводчик не поддерживает https только http
можно попробовать извращенный способ найти в гугле сохранённую копию страницы и сделать перевод её

Все понятно. Жаль.
А насчет страницы из гугл кеша ты хитро придумал :), но там наверно будут не все страницы. Прикручу эту фишку к своей кнопке Translate.  Интересно как это реализована в расширениях которые тоже переводят в гуглопереводчике, наверно создают обычную страницу из https и переводят.

skynet281978 пишет

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

Спасибо, но я спрашиваю для своей кнопки Translate

Отредактировано bunda1 (26-06-2012 19:56:44)

Отсутствует

 

№419426-06-2012 19:55:03

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Translate(Firefox 3.6 +)Translate
Исправил ошибки:
Не работала на Firefox 13.
Не переводила https страницы.
Не переводила выделенный текст из полей ввода - типа онлайн блокноты, виртуальные клавиатуры, поле ввода на форумах и подобные.

Отредактировано bunda1 (26-06-2012 19:56:15)

Отсутствует

 

№419526-06-2012 20:35:37

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

okkamas_knife
Я нашел букмарклет от Microsoft который  отлично переводит https страницы:

Выделить код

Код:

javascript:(function(){var s = document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; document.body.insertBefore(s, document.body.firstChild);})()

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

Выделить код

Код:

var url = "http://www.microsofttranslator.com/bv.aspx?from=&to=ru&a="+content.location;
loadURI(url);

Отредактировано bunda1 (26-06-2012 22:24:40)

Отсутствует

 

№419626-06-2012 20:49:54

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 14.0

Re: Custom Buttons

bunda1
Благодарю за исправления :beer:

Отсутствует

 

№419726-06-2012 21:38:37

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Nightly 16.0

Re: Custom Buttons

bunda1
СПАСИБО! За букмарклет.

Отредактировано Пандёнок (26-06-2012 21:38:58)

Отсутствует

 

№419826-06-2012 23:21:08

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

okkamas_knife пишет

как видишь он добавляет перед первым нодом документа скрипт с источником указанным в s.src
у тебя два варианта
1 сделать кнопкой тоже самое
2 скачать тот скрипт,внутри него кстати тоже есть ссылки на скрипты их тоже придётся вытащить
и все это в собранном виде либо запихивать также в страницу либо изменять скрипт чтоб он работал из кнопки.

Понятно, что ничего не понятно. Похоже я с этим не справлюсь, жаль.

okkamas_knife пишет

насколько я понял тот второй скрипт берет по очереди все текстовые ноды и прогнав их через переводчик заменяет их на странице переводом

Да заменяет.

Добавлено 26-06-2012 23:32:56
Все таки нашел решение, только как перевести  в новой активной вкладке ?

Выделить код

Код:

content.document.location = "javascript:var s = content.document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; content.document.body.insertBefore(s, document.body.firstChild); void(0);";

Отредактировано bunda1 (26-06-2012 23:32:56)

Отсутствует

 

№419927-06-2012 00:03:52

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

Re: Custom Buttons

bunda1
Autocopy+3(Firefox 3.6-13)
В [nightly] перестала работать прикольная фишка

Теперь можно скопировать адрес страницы если кликнуть правой клавышей мыши на картинке(favicon) сайта в адресной строке,

исправь плиз

Отсутствует

 

№420027-06-2012 00:11:27

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

okkamas_knife
Да по другому наверно никак, но решение какое то не здоровое и медленное:

Выделить код

Код:

var newTab = gBrowser.duplicateTab(gBrowser.mCurrentTab);
++gBrowser.tabContainer.selectedIndex;

gBrowser.addEventListener("pageshow", function(event){
gBrowser.removeEventListener("pageshow", arguments.callee, true);
content.document.location = "javascript:var s = content.document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; content.document.body.insertBefore(s, document.body.firstChild); void(0);";
}, true);

voqabuhe
Хорошо, я завтра исправлю.

Отредактировано bunda1 (27-06-2012 00:12:08)

Отсутствует

 

Board footer

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