Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XmlHttp - передача функции как обработчика событий 
:(
    Опции темы
anian
Дата 2.8.2006, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Дано:
Код

var xr = new XmlHttpRequest();
xr.onreadystatechange = handler;
..........
function handler(){
      // ... чего-то обрабатываем
}


Сделал я свой "как-бы класс" - обертку для XmlHttpRequest:
Код

var req = XRequest();
//обработчик передаю так
req.onreadystatechange(handler);

Вопрос: как сделать передачу обработчика просто присвоением?
PM MAIL   Вверх
Sardar
Дата 2.8.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



anian, в оригинальном JS были геттеры/сеттеры, но их порезал MS, а следовательно и ECMA (стандарты которой иногда отличаються своей бесполезностью или ограниченностью).

В мозилле get/set есть, также есть __defineGetter__, __defineSetter__ магия. В гугле примеры.

Код
XRequest.prototype.__defineGetter__("onreadystatechange", function(){return this.httprequest.onreadystatechange;});
XRequest.prototype.__defineSetter__("onreadystatechange", function(val){ this.httprequest.onreadystatechange = val;});



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
anian
Дата 2.8.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Смотрим код AJAX-интерфейса Яндекс-Почты:
core.js:
Код

var req=new AjaxObject();
req.onreadystatechange=handleResult;
req.open('GET','/new?count='+messagesCount,true);
req.send();


Присваивают же как-то?
Есть код...выложить?
PM MAIL   Вверх
Sardar
Дата 2.8.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(anian @  2.8.2006,  10:49 Найти цитируемый пост)
Присваивают же как-то?
Есть код...выложить? 

Как ваирант при вызове open регистрируют onreadystatechange.

На встречу, а зачем эта обёртка нужна вообще, если API идеентичен оригинальному компоненту?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
anian
Дата 3.8.2006, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Цитата

Как ваирант при вызове open регистрируют onreadystatechange.

Каждое слово понимаю, смысла не понимаю smile пример можно?

API идентичен, пожалуй, только присвоением обработчика...объект создается в зависимости от браузера, open в зависимости от метода какие надо заголовки выставляет, send опять же относительно браузера ставит null, данный или ничего не ставит...ну и опять же, привычка у меня классы делать smile
PM MAIL   Вверх
Sardar
Дата 3.8.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Нда... это говорит только в пользу хорошего дизайна XMLHttpRequest, всё что нужно есть в компоненте сразу без обёрток smile

Цитата(anian @  3.8.2006,  06:37 Найти цитируемый пост)
пример можно?

Возможно функция опен, перед тем как передать вызов request'у ставит onreadystatechange из ранее поставленной переменной, убедись что это не так. Активных (геттеры/сеттеры) полей в ИЕ нет.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Exception
Дата 3.8.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 1
Всего: 186



Хм, а можно выложить обёртку глянуть smile ? Интересно.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.