В ноябре 2000 года, консорциум W3C опубликовал Спецификацию событий объектной модели документа (DOM) Level 2, предлагающую более детальный и точный способ управления событиями на web-странице. Новый способ применения событий в элементах HTML выглядит следующим образом:
Первый параметр метода addEventListener является именем события, и нужно отметить, что теперь больше не используется префикс "on". Второй параметр является ссылкой на функцию, которую надо вызвать, когда происходит событие. Третий параметр управляет так называемым useCapture для события, т.е. должен ли использоваться перехват события или всплытие события.
Противоположной для функции addEventListener будет removeEventListener, которая удаляет любое заданное событие из элемента HTML.
К сожалению Internet Explorer до сих пор не реализовал модель событий DOM Level 2, и вместо этого использует свой собственный проприетарный метод attachEvent. В действии он выглядит следующим образом:
Отметим, что attachEvent по прежнему использует префикс "on" перед именем фактического события, и не содержит никакой поддержки для решения фазы перехвата.
Противоположной для функции attachEvent будет detachEvent, которая удаляет любое заданное событие из элемента HTML.
При несогласованности между различными браузерами в реализации обработки событий, web-разработчиками были предприняты многочисленные попытки предложить хорошее решение для успешного использования событий во всех основных браузерах. Эти решения имеют различные аргументы за и против и обычно называются функциями addEvent.
Большинство основных библиотек JavaScript имеют встроенные решения, и существует также ряд автономных решений, доступных в сети. Одним из предложений является использование addEvent Дина Эдвардса (http://dean.edwards.name/weblog/2005/10/add-event/); необходимо также посмотреть что-нибудь типа средств обработки событий в библиотеке jQuery JavaScript (http://docs.jquery.com/Events).
Прежде чем погружаться глубже в объяснение, как управлять и вызывать события, хотелось бы подчеркнуть вопрос доступности.
Хотя для большинства людей это достаточно общий термин, он используется здесь, чтобы выразить идею о том, что цели, которые желательно реализовать с помощью обработки событий, должны достигаться, даже когда поддержка JavaScript отключена, или по каким-то другим причинам блокирована в web-браузере.
Некоторые пользователи выключают JavaScript в своих web-браузерах, но чаще всего прокси-серверы, брандмауэры и чрезмерно усердные антивирусные программы не позволяют JavaScript вести себя ожидаемым образом. Пусть это не приводит вас в уныние, моя задача показать, как создавать события, которые имеют резервный доступ в случае недоступности JavaScript.
Обычно никогда не определяйте события в элементах HTML, которые еще не имеют встроенного режима работы для данного определенного события. События onclick необходимо использовать только в таких элементах как a, которые уже имеют резервный механизм для событий щелчка (например, переход в местоположение, определенное в ссылке, или отправка формы).