Страницы: 1
Доброго дня, есть вопрос по поводу addon-bar, появившемуся в 4й версии. Долгое время не доходили руки обновить одно локальное расширение, совместимость по большому счёту осталось, но пользователи хотят, чтоб кнопка расширения могла перемещаться в нужное место по панели расширений, как это сделано в расширениях для 4.х и более версий.
Внимание вопрос, как с минимальными изменениями переделать расширение?
Отягощающие обстоятельства - кнопка на тулбаре представляет с собой две колонки: в одной картинка, в другой текст.
Вот так выглядит кусок из XUL, касающийся тулбара:
<statusbar id="status-bar"> <statusbarpanel id="BlablaStatusPanel" insertbefore="resizerBottomRight" context="BlablaStatusPopupMenu" tooltip="BlablaStatusTooltip" onclick="Blabla.StatusClick(event);"> <grid> <rows> <row /> </rows> <columns> <column flex="1"> <image id="BlablaStatusIcon" src="chrome://blabla/skin/icon_disabled.png"/> </column> <column flex="1"> <label id="BlablaLabel" value="0.00" hidden="true" /> </column> </columns> </grid> </statusbarpanel> </statusbar>
Как правильно это адаптировать под версию 4.х и так, чтоб можно было перетаскивать по панельке?
Заранее спасибо.
(firefox-овые расширения ранее почти не ковыряла, но кое-что умею и быстро учусь)
Отсутствует
Как-то так:
<toolbarpalette id="BrowserToolbarPalette"> <toolbaritem id="BlablaStatusPanel" context="BlablaStatusPopupMenu" tooltip="BlablaStatusTooltip" onclick="Blabla.StatusClick(event);"> <grid> ... </grid> </toolbaritem> </toolbarpalette>
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Тема перенесена из форума «Firefox» в форум «Разработка».
Do you feel lucky, punk?
Отсутствует
Infocatcher , Спасибо большое. Заработало. Вроде делала тоже самое, но видимо перемудрила.
Ещё вопрос, теперь по умолчанию тулбар в панели расширений не появляется, его надо принудительно вытаскивать из вид - панели инструментов - настроить (и перетаскивать руками на панель).
Но в расширениях типа noscript тулбар появляется сразу без манипуляций. Как его по умолчанию заставить быть на панельке?
И какой MIME-type должен отдавать сервер на .xpi-файлик? Чтобы он сразу открывался в фф, а не требовал сначала сохранить, если это возможно.
Отредактировано tuarisa (11-07-2011 14:39:36)
Отсутствует
Но в расширениях типа noscript тулбар появляется сразу без манипуляций. Как его по умолчанию заставить быть на панельке?
Ну, можно посмотреть, что делает NoScript.
https://developer.mozilla.org/en/Code_s … by_default
И какой MIME-type должен отдавать сервер на .xpi-файлик?
application/x-xpinstall
Добавлено 11-07-2011 15:05:31
\chrome\noscript.jar\content\noscript\Main.js
ensureUIVisibility: function() { const window = DOM.mostRecentBrowserWindow; try { const document = window.document; const addonBar = document.getElementById("addon-bar"); if (!addonBar) return false; const tbbId = "noscript-tbb"; let tbb = document.getElementById(tbbId); if (tbb) return false; let navBar = document.getElementById("nav-bar"); let [bar, refId] = addonBar.collapsed && navBar && !navBar.collapsed || !this.getPref("statusIcon", true) ? [navBar, "urlbar-container"] : [addonBar, "status-bar"]; set = bar.currentSet.split(/\s*,\s*/); if (set.indexOf(tbbId) > -1) return false; set.splice(set.indexOf(refId), 0, tbbId); bar.setAttribute("currentset", bar.currentSet = set.join(",")); document.persist(bar.id, "currentset"); try { window.BrowserToolboxCustomizeDone(true); } catch (e) {} try { window.noscriptOverlay.initPopups(); } catch(e) {} return true; } catch(e) { this.dump(e); return false; } },
Отредактировано Infocatcher (11-07-2011 15:05:31)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Я заюзала то, что было по первой ссылке. Но по-моему это немного не то, чего мне хотелось. Мне бы хотелось при первом запуске назначить ему положение, а о дальнейшем его расположении озадачить пользователя. Чтоб при каждом новом запуске он не помещался туда, куда, куда совался при первом запуске.
Я попробовала сделать с детектом первого запуска, как здесь http://stackoverflow.com/questions/4978188/how-do-i-detect-a-first-run-in-firefox-a-addon , но по-моему:
pref("extensions.blabla@ololo.firstrun", true);
не работает, файлик лежит в defaults\preferences.
Отсутствует
но по-моему:
pref("extensions.blabla@ololo.firstrun", true);
не работает, файлик лежит в defaults\preferences.
Подойдет любая настройка – надо проверять значение перед добавлением кнопки и переключать в состояние «кнопка добавлена» после.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Страницы: 1