Я пытаюсь разработать панель инструментов Firefox;)
так что моя структура
В файле options.xul есть окно PrefWindow, которое я открываю над
<toolbarbutton oncommand="esbTb_OpenPreferences()"/>
function esbTb_OpenPreferences() {
window.openDialog("chrome://Toolbar/content/options.xul", "einstellungen", "chrome,titlebar,toolbar,centerscreen,modal", this);}
поэтому в моих настройках я могу установить некоторые флажки, которые указывают, какие ссылки представлены на моей панели инструментов. Поэтому, когда окно настроек закрыто или нажата кнопка «ОК», я хочу вызвать событие или функцию, которая обновляет через DOM мою панель инструментов.
Так что это функция, которая вызывается при загрузке панели инструментов. Он устанавливает видимость ссылок на панели инструментов.
function esbTB_LoadMenue() {
var MenuItemNews = document.getElementById("esbTb_rss_reader");
var MenuItemEservice = document.getElementById("esbTb_estv");
if (!(prefManager.getBoolPref("extensions.esbtoolbar.ShowNews"))) {
MenuItemNews.style.display = 'none';
}
if (!(prefManager.getBoolPref("extensions.esbtoolbar.ShowEservice"))) {
MenuItemEservice.style.display = 'none';
}
}
Поэтому я попытался подумать, например, добавить в диалог EventListener, который не работает ... так, как я пытался ...
И я также попытался передать объект окна из корневого окна (панели инструментов), так как аргумент функции opendialog изменил функцию на эту.
function esbTB_LoadMenue(RootWindow) {
var MenuItemNews = RootWindow.getElementById("esbTb_rss_reader");
var MenuItemEservice = RootWindow.getElementById("esbTb_estv");}
А затем попытался получить доступ к элементам через объект передачи обслуживания, но это также не изменило мою панель инструментов во время выполнения.
Итак, я пытаюсь изменить видимые ссылки на моей панели инструментов во время выполнения, и я не понимаю, как мне это сделать ...
заранее спасибо
------- ------- редактировать
var prefManager = {
prefs: null,
start: function()
{
this.prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
.getBranch("extensions.esbtoolbar.");
this.prefs.QueryInterface(Components.interfaces.nsIPrefBranch2);
this.prefs.addObserver("", this, false);
},
end: function()
{
this.prefs.removeObserver("", this);
},
observe: function(subject, topic, data)
{
if (topic != "nsPref:changed")
{
return;
}
//Stuff what is done when Prefs have changed
esbTB_LoadMenue();
},
SetBoolPref: function(pref,value)
{
this.prefs.setBoolPref(pref,value);
},
GetBoolPref: function(pref)
{
this.prefs.getBoolPref(pref);
}
}
Так что это моя реализация.