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);

1) Как в массиве javascript в качестве ключа применить переменную типа "XUL Element"?

Вообще-то массивах в качестве ключей используются индексы: 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 ();
}

2) Каждый элемент DOMa имеет свой ID. Если его не указать явно, то система создает свой. Если я прав, то как получить реальный ID
элемента, не указанного явно в атрибутах.

Вряд ли это возможно. Но у элементов tab есть свойство linkedPanel / атрибут linkedpanel - там вполне уникальный идентификатор для вкладки браузера.

Спасибо