Memory Monitor
как сделать чтобы в адресной строке отображение памяти было крупнее, а то мелкий почему то у меня шрифт
В userChrome.css + рестарт
Или попробуй в коде Memory Monitor после
добавить
+ рестарт
Отредактировано bunda1 (25-06-2012 03:56:20)
Отсутствует
bunda1 в одном из стилей для стайлиш мешало:
#MemoryDisplay{
-moz-appearance: none !important;
border: 0px !important;
padding:0px !important;
margin-right:-3px !important;
margin-left:-3px !important;
}
Отсутствует
Скажите, пожалуйста, есть ли какой-то способ сохранять данные из кода кнопки между сессиями?
1. Использовать Preferences, как это делают расширения, не получится: из кода кнопки можно только получить или изменить значение, но не создать новый ключ (создавать можно или вручную из about:config, или в файлах настроек расширений, или через user.js, но всё это не подходит).
2. Использовать простой файл или базу данных слишком сложно.
3. Использовать Local storage тоже не получается, потому кнопка не связана со страницами браузера (с объектом content), она лишь посылает и получает XMLHttpRequest, а у документов этого типа нет объекта window (defaultView), к которому был бы привязан Local storage.
Есть ли ещё какие-то способы хранить и восстанавливать данные?
Отсутствует
homo_nudus
В готовых кнопках есть кнопки которые именно создают значения в about:config, посмотрите например кнопку Translate, вот ссылка на кнопку №93
Кстати, bunda1 можете исправить эту кнопку? Так как в ней используется GlobalStorage, видимо для настройки кнопки, но так как Globalstorage убрали с 13-ой версии, то и настройки в контекстном меню кнопки не отображаются и кнопка становится замыленной когда ее перетаскиваешь на панель, как будто она неактивна. Замечу, что кнопка тем не менее работает и переводит страницы, но баги такие присутствуют.
Отредактировано Kamui (25-06-2012 19:32:42)
Отсутствует
Kamui
okkamas_knife
Большое спасибо. Не думал, что set...Pref не только изменяет значения, но и создаёт ключи при их отсутствии.
Кстати, удивился, что у nsIPrefService тоже есть методы set...Pref, на MDN они значатся только в nsIPrefBranch.
Отсутствует
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 расширений. )
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Кстати, bunda1 можете исправить эту кнопку? Так как в ней используется GlobalStorage, видимо для настройки кнопки, но так как Globalstorage убрали с 13-ой версии, то и настройки в контекстном меню кнопки не отображаются и кнопка становится замыленной когда ее перетаскиваешь на панель, как будто она неактивна. Замечу, что кнопка тем не менее работает и переводит страницы, но баги такие присутствуют.
Завтра исправлю.
Отсутствует
Infocatcher
Спасибо. Насколько я понял из опытов, использовать getDefaultBranch вне расширения нет смысла, потому что созданные ключи не сохраняются в файл настроек и не восстанавливаются после перезапуска. Но система пользовательских настроек вроде бы работает.
Отсутствует
Кстати, оказывается, не обязательно вызывать ошибку, чтобы проверить существование ключа. Поскольку из кнопки можно создать только пользовательскую настройку, существование можно проверять методом 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"]);
Ещё раз всем спасибо за помощь.
Отсутствует
Кнопка Открыть в нижней панели - без выпадающего списка ? Например только "Открыть Загрузки" , Открыть папку..."
Отредактировано Крошка Ру (05-12-2011 20:38:21)
а можно чтобы открывалось в нижней панели ?
Отредактировано Крошка Ру (24-06-2012 19:53:08)
....
Отредактировано Крошка Ру (26-06-2012 04:03:54)
Отсутствует
нет
okkamas_knife, а это >
Кнопка Открыть в нижней панели - без выпадающего списка ? Например только "Открыть Загрузки" , Открыть папку...",
"Настроить..."
такой шаблончик для кнопочки, чтобы можно было туда подставить то что нужно , без списка-простыни
Отредактировано Крошка Ру (26-06-2012 04:19:07)
Отсутствует
Кстати, удивился, что у 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 показывает, что этот класс реализует несколько интерфейсов:
а одна из особенностей 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)
Отсутствует
hydrolizer
Спасибо.
Отсутствует
homo_nudus
Еще можно проверить наличие через nsIPrefBranch.getPrefType(), там будет одна из констант: https://developer.mozilla.org/en/XPCOM_ … #Constants
Насколько я понял из опытов, использовать getDefaultBranch вне расширения нет смысла, потому что созданные ключи не сохраняются в файл настроек и не восстанавливаются после перезапуска.
Можно для удобства пользователя создавать значение по умолчанию. Хотя это больше актуально для restartless расширений (из-за бага). С другой стороны, кнопки вполне себе restartless, надо только немного больше повозиться и реализовать onDestroy() для уборки за собой.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Может кто знает как перевести в переводчике Google https страници а то не переводит и пишет
Извините, этот URL неправильный.
а конкретно что имеешь ввиду?
через кнопку или просто дополнение такое нужно, чтобы на самой странице переводило просто текст меняя его?
потому что дополнения я такие знаю.
Отредактировано skynet281978 (26-06-2012 14:06:29)
Отсутствует
Доброго времени суток!
Ребята,вы мне в своё время очень серьёзно помогли за что я безмерно благодарен.
Помогли с кнопкой включения/отключения того или иного джетпака,с кнопкой отключения/включения флеш-плагина,с кнопкой показа/скрытия панели закладок и много ещё с чем.
Вы не могли бы ещё помочь?
Есть ли возможность написать кнопку которая по аналогии включения/отключения джетпака включала/отключала бы тот или иной пользовательский скрипт "Scriptish"?
А то скрипты работающие на конкретных страницах не отображаются в меню Скриптиша если ты находишься не на них.
Не удобно постоянно заходить в "Пользовательские скрипты" чтобы включить или отключить.Да и скриптов набралось достаточно много что прокрутка тормозит.
Отредактировано questman (26-06-2012 18:36:06)
Отсутствует
Перевести в переводчике Google https страници напрямую никак нельзя, гуглопереводчик не поддерживает https только http
можно попробовать извращенный способ найти в гугле сохранённую копию страницы и сделать перевод её
Все понятно. Жаль.
А насчет страницы из гугл кеша ты хитро придумал , но там наверно будут не все страницы. Прикручу эту фишку к своей кнопке Translate. Интересно как это реализована в расширениях которые тоже переводят в гуглопереводчике, наверно создают обычную страницу из https и переводят.
а конкретно что имеешь ввиду?
через кнопку или просто дополнение такое нужно, чтобы на самой странице переводило просто текст меняя его?
потому что дополнения я такие знаю.
Спасибо, но я спрашиваю для своей кнопки Translate
Отредактировано bunda1 (26-06-2012 19:56:44)
Отсутствует
Translate(Firefox 3.6 +)Translate
Исправил ошибки:
Не работала на Firefox 13.
Не переводила https страницы.
Не переводила выделенный текст из полей ввода - типа онлайн блокноты, виртуальные клавиатуры, поле ввода на форумах и подобные.
Отредактировано bunda1 (26-06-2012 19:56:15)
Отсутствует
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)
Отсутствует
как видишь он добавляет перед первым нодом документа скрипт с источником указанным в s.src
у тебя два варианта
1 сделать кнопкой тоже самое
2 скачать тот скрипт,внутри него кстати тоже есть ссылки на скрипты их тоже придётся вытащить
и все это в собранном виде либо запихивать также в страницу либо изменять скрипт чтоб он работал из кнопки.
Понятно, что ничего не понятно. Похоже я с этим не справлюсь, жаль.
насколько я понял тот второй скрипт берет по очереди все текстовые ноды и прогнав их через переводчик заменяет их на странице переводом
Да заменяет.
Добавлено 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)
Отсутствует
bunda1
Autocopy+3(Firefox 3.6-13)
В перестала работать прикольная фишка
Теперь можно скопировать адрес страницы если кликнуть правой клавышей мыши на картинке(favicon) сайта в адресной строке,
исправь плиз
Отсутствует
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)
Отсутствует