Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.09.2010, 20:36
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

Chrome "events" + ООП
пишу расширение для хрома
function Page(port,type,script){
		if(!port)throw Error("Bad port to page");
		this.port=port;
		this.type=type;
		this.script=script;
		this.tab=port.tab;
		this.msgTypes=[];
		this.addScript=function(script,callback){
			
			chrome.tabs.executeScript(this.tab.id, {"file":script.src}, callback);
			this.script=script;
		}
		this.msg=function(type,data){
			this.port.postMessage({"type":type,"data":data});
		};
		this.addMsg=function (msgType,callback){
			msgTypes[msgType]=callback;
		}
		this.msgListener=function(obj){
			
			console.log(obj,this);
			switch(obj.type){
				case "pageType":
					this.type=obj.data;
					//cpage.type=obj.data;
					return;
				break;
				case "addScript":
					this.addScript(obj.data);
					return;
				break;
				case "getPrefs":
					this.msg("prefs",settings[this.script.title]);
				break;
				case "setPrefs":
					settings[this.script.title]=obj.data;
				break;
				case "getScripts":
					this.msg("scripts",scripts);
				break;
			}
			for(var type in msgTypes){
				
				if(type==obj.type){
					setTimeout(function(){msgTypes[type](obj.data,this);},2);
					return;
				}
			}
		
		}
		this.port.onMessage.addListener(this.msgListener);//тут
		
		this.port.onDisconnect.addListener(function(){
			delete this;
		});
	}
chrome.extension.onConnect.addListener(function(port) {
	
		console.log(port);
		pages.push(new Page(port));
		
	});

есть массив объектов Page
у объекта есть свойство port
в свойстве - объект типа Port
ему посылается сообщение
при этом возникает "событие"
надо в обработчике получить доступ к объекту, содержащему port в качестве свойства
пытался решить эту проблему вынеся в отд метод - не получилось
this всё равно глобал

Последний раз редактировалось KOLANICH, 21.09.2010 в 22:21.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тег <audio> в Opera, Chrome, Firefox Magneto Javascript под браузер 12 25.11.2010 15:12
Некорректное отображение форума в браузерах Chrome и Safari Magneto Сайт Javascript.ru 3 25.11.2010 11:06
Google Chrome перерисовка страницы во время выполнения скрипта Dekart Javascript под браузер 0 08.06.2010 08:35
ООП PHP вопрос mycoding Серверные языки и технологии 9 03.06.2010 02:57
Google Chrome Андрей Параничев Opera, Safari и др. 42 02.08.2009 14:23