При внимательном изучении табл. 17.1 можно заметить, что все события делят_ ся на две большие категории. Первая категория – это события ввода (raw events, или input events). Эти события генерируются, когда пользователь перемещает мышь, щелкает на кнопке мыши или нажимает клавишу. Эти низкоуровневые события просто описывают действия пользователя и не имеют другого смысла. Вторая категория событий – это семантические события (semantic events). Это высокоуровневые события, они имеют более сложный смысл и обычно происхо_ дят только в определенном контексте: когда броузер завершает загрузку доку_ мента или, например, когда должна выполниться передача данных формы. Се_ мантическое событие часто происходит как побочный эффект низкоуровневого события. Например, когда пользователь щелкает на кнопке Submit, вызываются три обработчика событий ввода: onmousedown, onmouseup и onclick. И в результате щелчка на кнопке мыши HTML_форма, содержащая кнопку Submit, генерирует семантическое событие onsubmit.
17.1. Базовая обработка событий
Другое существенное отличие делит события на аппаратно_зависимые, связан_ ные с мышью или клавиатурой, и аппаратно_независимые события, которые мо_ гут возбуждаться несколькими способами. Это различие особенно важно в плане доступности (см. раздел 13.7), поскольку одни пользователи в состоянии задей_ ствовать мышь, но не могут работать с клавиатурой, другие, наоборот, могут применять клавиатуру и не могут мышь. Семантические события, такие как on_ submit и onchange, практически всегда являются аппаратно_независимыми: все современные броузеры позволяют выполнять переход между полями HTML_ форм как с помощью мыши, так и с помощью клавиатуры. События, которые имеют в своих названиях слово «key» или «mouse», совершенно очевидно явля_ ются аппаратно_зависимыми. Если вы собираетесь использовать эти события, возможно, следует реализовать обработчики для парных событий, чтобы обеспе_ чить механизм обработки событий как мыши, так и клавиатуры. Примечатель_ но, что событие onclick можно рассматривать как аппаратно_независимое. Оно не зависит от мыши, потому что активизация с помощью клавиатуры элементов формы и гиперссылок тоже приводит к возбуждению этого события.