Javascript.RU

Множественные события

function get(elem){
  if(typeof(elem) == 'object') return elem;
  return document.getElementById(elem);
}

function eventhandler(e){
  e = e || window.event;
  if(!this.handlers) return;
  if(!this.handlers["on" + e.type]) return;
  for(var i = 0; i < this.handlers["on" + e.type].length; i++){
    if(this.handlers["on" + e.type][i]) this.handlers["on" + e.type][i](e);
  }
}

function addevent(elem,name,handler){
  if(typeof(elem) != "object") elem = get(elem);
  //Если доступна функция addEventListener - то очень хорошо
  if(elem.addEventListener){
    elem.addEventListener(name, handler, false);
  }
  else if (elem.attachEvent){
    elem.attachEvent("on" + name, handler);
  }
  else {
  	//Старые версии браузера
    if(!elem.handlers) elem.handlers = {};
    handlers = elem.handlers;
    if(!handlers["on"+name]) {
      elem.handlers["on"+name] = new Array();
      //Если раньше уже был установлен обработчик - добавить его тоже
      if(elem["on" + name]) handlers["on"+name].push(elem["on" + name]);
    }
    handlers["on"+name].push(handler);

    elem["on"+name] = eventhandler;
  }
}

Проверено в современных версиях Firefox и Internet Explorer.

0

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 01:57
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 12:35
#permalink

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
6 + 1 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Другие записи этого автора
Jason Bourne
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Популярные таги
Последние комментарии
Последние темы на форуме
Forum