Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как передать параметры в функцию при вызове на событие? (https://javascript.ru/forum/events/9568-kak-peredat-parametry-v-funkciyu-pri-vyzove-na-sobytie.html)

YISHIMITSY 24.05.2010 23:15

Как передать параметры в функцию при вызове на событие?
 
Вот такой вопрос: когда функция привязана на событие, как я понял в неё при вызове передаётся тока 1 параметр - объект Event (в ИЕ window.event) ну не важно.. вобщем, если нужно чтобы она вызывалась с другими параметрами, как их туда передать? Чтобы не пришлось юзать внешние для этой функции переменные

B~Vladi 24.05.2010 23:34

var data = {
// То, что нада передать
}
ele.addEventListener(type, function(evt){
  handler(evt, data);
}, false);

Пример приведён для Not IE. Более подробно почитай про замыкания.

YISHIMITSY 02.06.2010 10:07

ок, разобрался) Терь возникает другой вопрос: каким образом можно узнать, привязан ли данный обработчик к объекту или нет? Знаю что eventListenerList не поддерживается. Какие-то обходные варианты есть?

B~Vladi 02.06.2010 10:17

Цитата:

Сообщение от YISHIMITSY
Какие-то обходные варианты есть?

Есть. Можно написать самому.

YISHIMITSY 02.06.2010 10:42

Цитата:

Сообщение от B~Vladi (Сообщение 57504)
Есть. Можно написать самому.

В том и дело.. не представляю как. Не могли-бы вы объяснить хотя-бы алгоритм? или ссылку на статью какую-нить

Gvozd 02.06.2010 11:13

напиши свою обертку для навешивания событий
внутри сперва запомни в специальный массив ссылку на ф-цию(ну или еще можно на DOM-элемент, собятие и прочая, если надо)
а затем повесь стандартным образом обработчик события
затем если надо выяснить, проходишься по массиву в поисках нужной тебе ф-ции, и если нашел, то заодно можно узнать сопутствующую инфу
желательно поместить обе ф-ции и объект внутри замыкания, и вывести ссылки на ф-ции наружу, чтобы не засорять глобальную область видимости

B~Vladi 02.06.2010 12:23

За основу можешь взять этот код: Кросс-браузерное добавление и обработка событий


Часовой пояс GMT +3, время: 13:50.