Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.09.2011, 03:50
Новичок на форуме
Отправить личное сообщение для Jamshut Посмотреть профиль Найти все сообщения от Jamshut
 
Регистрация: 26.09.2011
Сообщений: 5

Удаление обработчиков установленных addEventListener,
f_AddEvent = function(v_target_o,v_name_s,v_handler_f)
{ 
  if(v_target_o.addEventListener)
  {
    v_target_o.addEventListener(v_name_s,v_handler_f,false);
  }
  else if(v_target_o.attachEvent)
  {
    v_target_o.attachEvent('on'+v_name_s,v_handler_f);
  };
};

суть вопроса такая:
- если обработчик устанавливается этой функцией
- я не знаю и не имею ссылки на v_handler_f чтоб удалить обработчик методами removeEventListener("типCобытия", функцияПолучателяСобытия, захват); detachEvent("имяСобытия", ссылкаНаФункцию);

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

пытаюсь искать информацию в обьекте obj очень просто:
var str='';for(i in obj){try{str += i+' = '+obj[i]+';   ';}catch(e){};};alert(str);

может как то перебрать все функции, но где взять список ссылок на все функции и не факт что они определены глобально (
v_target_o.addEventListener('click',function(){bla bla},false);
) типа такого:

for(i in functions_list)
{
  try
   {
      v_target_o.removeEventListener("click", functions_list[i], false);
   }
   catch(e){};
};




Ну и еще вопрос, в каком отладчике и где можно увидеть обработчики событий установленные на элементе таким методом (функцией f_AddEvent) ? Вроде в фаербаге собирались ввести подобное.

Последний раз редактировалось Jamshut, 26.09.2011 в 03:58. Причина: а, забыл еще спросить
Ответить с цитированием
  #2 (permalink)  
Старый 26.09.2011, 11:14
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Если вам требуется удалить все обработчики с объекта, то делайте следующим образом. Вешайте на событие объекта свою функцию (назовем ее служебной), а те функциии, что требуются для работы складывайте в массив. При срабатывании служебной функции проходите по массиву и выполняйте навешанные функции. Чтобы исключить все функции из обработки, просто очистите массив. Для удаления обработчика исключите отдельный элемент из массива. Этим способом вы так же можете решить проблему контекста this для обработчиков событий в ie. Где хранить массив функций решайте сами.
Ответить с цитированием
  #3 (permalink)  
Старый 26.09.2011, 13:28
Новичок на форуме
Отправить личное сообщение для Jamshut Посмотреть профиль Найти все сообщения от Jamshut
 
Регистрация: 26.09.2011
Сообщений: 5

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

если бы было можно потерять чужие обработчики то можно сделать так
v_target_o.parentNode.innerHTML = v_target_o.parentNode.innerHTML;

все обработчики внутри кода бы потерялись

Вопрос этот скорее из разряда изобретения велосипеда но разобраться в таких нюансах языка будет полезно


Про мониторинг событий в отладчике тож остается открытым


заранее спасибо

Последний раз редактировалось Jamshut, 26.09.2011 в 13:47. Причина: напоминаю
Ответить с цитированием
  #4 (permalink)  
Старый 27.09.2011, 11:00
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

>разобраться в таких нюансах языка будет полезно
Язык тут ни при чем?! Это DOM.

Последний раз редактировалось da_ff, 27.09.2011 в 11:15.
Ответить с цитированием
  #5 (permalink)  
Старый 28.09.2011, 12:39
Новичок на форуме
Отправить личное сообщение для Jamshut Посмотреть профиль Найти все сообщения от Jamshut
 
Регистрация: 26.09.2011
Сообщений: 5

та не, это никакой не DOM)))
Ответить с цитированием
  #6 (permalink)  
Старый 28.09.2011, 13:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Та не, это всё-таки DOM.
Ответить с цитированием
  #7 (permalink)  
Старый 28.09.2011, 23:17
Новичок на форуме
Отправить личное сообщение для Jamshut Посмотреть профиль Найти все сообщения от Jamshut
 
Регистрация: 26.09.2011
Сообщений: 5

а, ну если Вы имеете ввиду что это связано с объектами в DOM, их свойствами и методами, то да, мне поначалу показалось такое утверждение нелепым, потому что браузерный JS и есть связка JS и DOM, но соглашусь тогда что концептуально я неправ был - "Язык тут ни при чем?! Это DOM" спасибо, капитан очевидность.
Ответить с цитированием
  #8 (permalink)  
Старый 29.09.2011, 10:55
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Jamshut,
Обращайтесь!
Всегда ваш К.О.

P.S. Вообще, написал я это с предложением посмотреть стандарт DOM.

Последний раз редактировалось da_ff, 29.09.2011 в 10:58.
Ответить с цитированием
  #9 (permalink)  
Старый 29.09.2011, 18:18
Новичок на форуме
Отправить личное сообщение для Jamshut Посмотреть профиль Найти все сообщения от Jamshut
 
Регистрация: 26.09.2011
Сообщений: 5

ок ))) но вопрос интересует, хотя бы отладчик где можно смотреть обработчики поставленные таким путем
Ответить с цитированием
  #10 (permalink)  
Старый 29.09.2011, 18:47
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Jamshut,
Сам буду рад если кто-то ответит, потому как сам такого инструментария не встречал. Есть решения для различных библиотек, но решения, которое бы расширяло DOM-объекты соответсвующими коллекциями обработчиков не видел.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42