помогите разобраться с видимостью объектов.

Выделить код

Код:

var MyEXT_xmlHttp_post = new XMLHttpRequest();

var MyEXT = {
//init	
	init: function() {},

//main
 	getXmlString: function (doc1){},
	process:function (doc){	}, 
	vote:function(doc){		
		var xmlString = (new XMLSerializer).serializeToString(doc);
		if (MyEXT_xmlHttp_post){
			try{
				MyEXT_xmlHttp_post.open("POST", "http://myServer.com/post.php", true);
				MyEXT_xmlHttp_post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				MyEXT_xmlHttp_post.onreadystatechange = MyEXT.handleRequestStateChange2;///###############
				MyEXT_xmlHttp_post.send(xmlString);
				//alert (xmlString);
			} catch (e){
				alert("Sending error :" + e.toString());
			}
		}
		window.close() ;	//alert(xmlString);
	},

	handleRequestStateChange2:function (){	 // function called when the state of the HTTP request changes

		if (MyEXT_xmlHttp_post.readyState == 4) {
			if (MyEXT_xmlHttp_post.status == 200) {
				try{
					var xmlResponse = MyEXT_xmlHttp_post.responseXML;
				//alert (xmlResponse);
				}catch(e){
					alert("Error reading the response: " + e.toString());
				}
			} else	{
				alert("There was a problem retrieving the data:\n" + MyEXT_xmlHttp_post.statusText);
			}
		}
	},
};

MyEXT_xmlHttp_post - объект создан, запрос отправляется, когда приходит ответ сервера в функции handleRequestStateChange2 появляется ошибка,что объект MyEXT_xmlHttp_post  не определен. 

В чем могут быть проблемы? можно ссылку на литературу по теме.

видимо я задаю уникальные вопросы, будем искать.

Похожая проблема описывается  здесь http://forum.mozilla-russia.org/viewtopic.php?id=24318

Пока решение не найдено.

Подскажите расширения использующие XmlHttpRequest , может в коде этого расширения найду ответ.

Мне не удалось воспроизвести проблему на инструментах, выполняющих тестовый код в function () {} (или, из-за несоответствия тестового url). Тест, определяющий MyEXT_xmlHttp_post на верхнем уровне js-файла делать лень.

Есть предположения:
1) callback выполняется в другом потоке, в окружении которого нет MyEXT_xmlHttp_post
и/или
2) при выполнении запроса происходит что-нибудь вроде редиректа, и автоматически создаётся новый запрос

Предлагаю попробовать:
1) "Завернуть" в function весь код целиком
или
2) только handleRequestStateChange2 (MyEXT_xmlHttp_post.onreadystatechange = function () { ... })
3) Попробовать брать запрос из аргумента callback'а:

Выделить код

Код:

...
    handleRequestStateChange2:function (evt){
        MyEXT_xmlHttp_post = evt. target;
...

Пробовал разные способы "заворачивания в функцию" не получилось вот готовый пример в котором наблюдается указанная проблема http://rapidshare.com/files/157795519/myext2.xpi.html

при установке расширения в углу статусбара появится красный глаз, нажав на который откроется окошко отправки текста. в результате должен появится алерт с полученным текстом.

example.com возвращает код страницы при любом запрсе

1. Строку "myext2_xmlHttp_post = evt.target;" из расширения надо вообще убрать (видимо, event'ы на xmlhttprequest в ff2 не работают)
2. Проблему создаёт window.close()

Первое, что приходит в голову - закрывать окно не сразу или размещать MyEXT_xmlHttp_post.onreadystatechange в главном окне браузера.

спасибо разобрался,  окно закрывалось со всеми объектами раньше чем приходил ответ.