Страницы: 1
Доброго времени суток, уважаемые форумчане.
Передо мной стоит дилемма. Нужно хранить свойства элементов тулбара каким-то способом.
1. Persist
2. nsIPrefBranch
Первый вариант, изящен, не требует каких-либо потугов со стороны программиста.
Например:
<toolbarbutton id="mybutton1" type="menu" hidden="false" collapsed="false" pos="0" persist="hidden;collapsed;pos" label="MyButton" />
На тулбаре есть кнопки. Какие-то по умолчанию hidden="true", какие-то "false". Далее через форму редактирования тулбара устанавливаю значения hidden. Изменения применяются - все ок. Закрываю окно FF, открываю все ок - кнопки отображаются правильно. Опять закрываю, открываю все стоит как-будто впервый раз был установлен мой плагин.
По каким-то непонятным для меня причинам, параметр hidden не всегда считывается правильно (а именно через раз). Как отловить? Что с этим сделать? Даже малейшего представления не имею.
Второй вариант, требует вмешательства со стороны программиста, трудоемок для работы FF.
Например:
const MyPrefService =Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService); const MyBranch = MyPrefService.getBranch("MyApp."); function CloseToolbar() { var MainToolBar = document.getElementById("MyToolbar"); var MainArray=new Array(); for(var i=0; i<MainToolBar.childNodes.length; i++) { var iItem=MainToolBar.childNodes[i]; var id=iItem.id; MainArray[id]=new Array(); MainArray[id]["hidden"]=iItem.hidden; MainArray[id]["collapsed"]=iItem.collapsed; MainArray[id]["pos"]=iItem.attributes.getNamedItem("pos").nodeValue; } //КАК СОХРАНИТЬ ДВУМЕРНЫЙ АССОЦИАТИВНЫЙ МАССИВ ?????????????? }
Также не понятно как можно в данном случае сохранить такого рода массив?????? Может кто-нибудь сталкивался с такой задачей????
Может быть кто-нибдуь что-то знает про это??? Про глюки при использовании persist ??
Отредактировано Диня (17-09-2007 17:40:44)
Отсутствует
Диня
параметры persist перечисляются через пробел
Добавлено Mon Sep 17 18:28:51 2007 :
http://developer.mozilla.org/en/docs/XU … te:persist
Отсутствует
Диня
параметры persist перечисляются через пробелДобавлено Mon Sep 17 18:28:51 2007 :
http://developer.mozilla.org/en/docs/XU … te:persist
Добрый день, shutnik
Спорить не буду в разных источниках по разному.
Сидеть на месте и ждать ответа не cмог, поэтому пока наваял следующее, может кому-то пригодится.
function LoadFromBranch() { var MainToolBar = document.getElementById("MyToolbar"); // get stored tbbuttons properties; for(var i=0; i<MainToolBar.childNodes.length; i++) { var id=MainToolBar.childNodes[i].id; if(MyBranch.prefHasUserValue("mytoolbar_"+id+"_hidden_value")) MainToolBar.childNodes[i].hidden=MyBranch.getBoolPref("advsb_"+id+"_hidden_value"); if(MyBranch.prefHasUserValue("mytoolbar_"+id+"_pos_value"))MainToolBar.childNodes[i].setAttribute("pos",MyBranch.getIntPref("mytoolbar_"+id+"_pos_value")); else MainToolBar.childNodes[i].setAttribute("pos",i); } } function SaveToBranch() { var MainToolBar = document.getElementById("MyToolbar"); //save properties of all elements for(var i=0; i<MainToolBar.childNodes.length; i++) { var id=MainToolBar.childNodes[i].id; MyBranch.setBoolPref("mytoolbar_"+id+"_hidden_value",MainToolBar.childNodes[i].hidden); MyBranch.setIntPref("mytoolbar_"+id+"_pos_value",i); } }
Отредактировано Диня (18-09-2007 10:11:34)
Отсутствует
Страницы: 1