Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№103-02-2009 01:26:45

lemax
Участник
 
Группа: Members
Зарегистрирован: 12-11-2008
Сообщений: 36
UA: Epiphany 2.22

Ассоциативный массив с объектом XUL елемента в качестве ключа

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

Отредактировано lemax (03-02-2009 01:28:13)

Отсутствует

 

№203-02-2009 15:21:55

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Ассоциативный массив с объектом XUL елемента в качестве ключа

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 - там вполне уникальный идентификатор для вкладки браузера.

Отредактировано Anton (03-02-2009 15:24:29)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№303-02-2009 19:00:26

lemax
Участник
 
Группа: Members
Зарегистрирован: 12-11-2008
Сообщений: 36
UA: Epiphany 2.22

Re: Ассоциативный массив с объектом XUL елемента в качестве ключа

Спасибо

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]