Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > прицепить обработчик


Автор: skyboy 1.9.2006, 13:02
Захотелось мне исключительно в дебажных целях прикрутить динамически к КАЖДОМУ вменяемому элементу на странице реакцию на клик, чтоб выдавал он мне некоторую информацию. Но! У элементов уже могут оказаться установленные обработчики, как инлайн(onclick="...."), так и установленные динамически. Есть ли способ как-нить "перецепить" обработчики, чтоб мой был первым? 
Уже думал, удалить все "сторонние", но detachEvent в IE и removeEventListener требуют аргументом функцию, которую надо "отцепить" от элемента. Как удалить всех "слушателей" так и не выяснил. Может скажет кто?

Автор: 12345c 1.9.2006, 13:45
Обычно на каждый конкретный обработчик ставят вместо него функцию добавления

Код
/**
 * Bind a function to the window.init pseudo event
 * @author Simon Willison
 * @see http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 */
function addInitEvent(func) {
  var oldoninit = window.oninit;
  if (typeof window.oninit != 'function') {
    window.oninit = func;
  } else {
    window.oninit = function() {
      oldoninit();
      func();
};  }}
, где вместо window.oninit ставят нужный обработчик. Эта ф. добавляет в конец. Чтобы добавляла перед существующей, - поменять местами предпоследние 2 строки.

Автор: skyboy 1.9.2006, 15:38
ясно. спасибо. вот только мне одно не нравится - неконтролируемое увеличение анонимных функций. Я, наверное, лучше наваяю объект-разъём, который будет собирать в себя массив функций, а потом будет прикреплять одну анонимную функцию с перечислением вызовов требуемых функций.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)