>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Ассоциативный массив с объектом XUL елемента в качестве ключа http://forum.mozilla-russia.org/viewtopic.php?id=30648 |
lemax > 03-02-2009 01:26:45 |
1) Как в массиве javascript в качестве ключа применить переменную типа "XUL Element"? 2) Каждый элемент DOMa имеет свой ID. Если его не указать явно, то система создает свой. Если я прав, то как получить реальный ID Хочу: Для каждого нового элемента <browser> из <tabbrowser> создавать специальный объект javascript. По закрытии вкладки браузера удалять специалный объект, Типа Выделить код Код:var Ext_PRG= { jc : [], //массив хронящий специальный объект для каждой вкладки браузера "<browser>" init : function() { this.jc=[]; gBrowser.tabContainer.addEventListener("TabOpen",Ext_PRG.tabsChanged,false); gBrowser.tabContainer.addEventListener("TabClose",Ext_PRG.tabsChanged,false); Ext_PRG.addTabBrowser(gBrowser.selectedBrowser); }, uninit : function() { gBrowser.tabContainer.removeEventListener("TabOpen",Ext_PRG.tabsChanged,false); gBrowser.tabContainer.removeEventListener("TabClose",Ext_PRG.tabsChanged,false); Ext_PRG.delTabBrowser(gBrowser.selectedBrowser); }, tabsChanged : function(event) { if(event.type=="TabOpen") Ext_PRG.addTabBrowser(event.target.linkedBrowser); else if(event.type=="TabClose") Ext_PRG.delTabBrowser(event.target.linkedBrowser); }, addTabBrowser : function(browser) { jc[browser]=new SpecBrowserObj();// Это специальный объект для каждой вкладки браузера. Здесь его создаю jc[browser].init(); }, delTabBrowser : function(browser) { try { jc[browser].uninit(); } catch(e) { alert("Element not found "+e); } jc[browser].uninit(); delete jc[browser];// Это специальный объект для каждой вкладки браузера. Здесь его удоляю } } window.addEventListener("load", Ext_PRG.init, false); window.addEventListener("unload", Ext_PRG.uninit, false); |
Anton > 03-02-2009 15:21:55 |
Вообще-то массивах в качестве ключей используются индексы: 0, 1, 2 и т. д. В массив можно положить сам browser. А browser'у приклеить поле с нужным объектом. Выделить код Код:addTabBrowser: function (browser) { browser ["ext_RPG_specBrowserObj"] = new SpecBrowserObj (); jc. push (browser); // browser. ext_RPG_specBrowserObj. init (); jc [jc. indexOf (browser)]. ext_RPG_specBrowserObj. init (); }
Вряд ли это возможно. Но у элементов tab есть свойство linkedPanel / атрибут linkedpanel - там вполне уникальный идентификатор для вкладки браузера. |
lemax > 03-02-2009 19:00:26 |
Спасибо |