Различные типы происшествий генерируют различные типы событий. Наводя мышь на гиперссылку и щелкая кнопкой мыши, пользователь вызывает собы_
1 Броузер Netscape 4 также имел собственную, отличную от других и несовмести_ мую модель обработки событий. Этот броузер в основном уже вышел из употреб_ ления, по’тому его модель обработки событий в этой книге не рассматривается.
2 Хотя к моменту написания этих строк броузер IE 7 уже находился в стадии разра_ ботки, у автора нет никакой информации о том, будет ли он поддерживать стан_ дартную модель обработки событий.
17.1. Базовая обработка событий
тия разных типов. Даже одно и то же происшествие может возбуждать различ_ ные типы событий в зависимости от контекста, например, когда пользователь щелкает на кнопке Submit, возникает событие, отличное от события, возникаю_ щего при щелчке на кнопке Reset в форме.
В исходной модели обработки событий событие – это внутренняя абстракция для веб_броузера, и JavaScript_код не может непосредственно манипулировать собы_ тием. Говоря о типе события в исходной модели обработки событий, мы на самом деле имеем в виду имя обработчика, вызываемого в ответ на событие. В этой мо_ дели код обработки событий задается с помощью атрибутов HTML_элементов (и соответствующих свойств связанных с ними JavaScript_объектов). Следова_ тельно, если приложению требуется знать, что пользователь навел мышь на опре_ деленную гиперссылку, то используется атрибут onmouseover тега <a>, определяю_ щего эту гиперссылку. А если приложению требуется знать, что пользователь щелкнул на кнопке Submit, используется атрибут onclick тега <input>, определяю_ щего кнопку, или атрибут onsubmit элемента <form>, содержащего эту кнопку.
Имеется довольно много различных атрибутов обработчиков событий, которые можно использовать в исходной модели обработки событий. Они перечислены в табл. 17.1, где также указано, когда вызываются эти обработчики событий и какие HTML_элементы поддерживают атрибуты обработчиков.
В процессе развития клиентского JavaScript_программирования развивалась и поддерживаемая им модель обработки событий. В каждую новую версию бро_ узера добавлялись новые атрибуты обработчиков событий. И наконец, специфи_ кация HTML 4 закрепила стандартный набор атрибутов обработчиков событий для HTML_тегов. В третьем столбце табл. 17.1 указано, какие HTML_элементы поддерживают каждый из атрибутов обработчиков событий. Для событий мыши в третьей колонке указывается, что атрибут обработчика события поддерживает большинство элементов. HTML_элементы, которые не поддерживают данный тип событий, обычно размещаются в разделе <head> документа или не имеют гра_ фического представления. К элементам, не поддерживающим практически уни_ версальные атрибуты обработчиков событий мыши, относятся <applet>, <bdo>,