URL не даёт никаких сведений о том, какая информация находится в документе. Последовательность символов, отображаемая в строке состояния, позволяет узнать доменное имя сервера, на котором находится документ, определить, в какой стране расположен этот сервер. Однако до тех пор, пока вы не скопируете документ на свой компьютер, вы ничего не сможете сказать о содержании документа.
Эта проблема давно стала объектом пристального внимания разработчиков программных средств, предназначенных для поддержки Web. Многие из них предлагают различные способы аннотирования ссылок, т. е. генерации кратких описаний и связывания этих описаний с гипертекстовыми ссылками. Для построения аннотаций разрабатываются различные автоматические средства, основанные па анализе действий пользователей. Однако качество автоматически сгенерированных аннотаций существенно уступает качеству аннотаций, создаваемых разработчиками HTML-документов.
Рассмотрим сценарий JavaScript, реализующий несложный механизм аннотирования ссылок, расположенных на Web-странице. Как только пользователь поместит курсор мыши на гипертекстовую ссылку, сценарий отобразит в строке состояния краткие сведения о документе, на который указывает эта ссылка.
Для того чтобы сообщение отобразилось в строке состояния, надо записать это сообщение в свойство status объекта Window. Соответствующая операция выглядит так:
window. status=строка_текста;
Очевидно, что данная операция должна выполняться в тот момент, когда курсор мыши помешается на ссылку, т. е. пересекает границу, отделяющую ссылку от остальной части документа. Если курсор переходит с поля документа на ссылку, генерируется событие onMouseOver, если курсор переходит со ссылки на поле документа, генерируется событие onMouseOut.
Таким образом, для того чтобы пользователь видел краткое описание документа, на которое указывает конкретная ссылка, обработчик события onMouseOver, связанного с этой ссылкой, должен вывести описание в строке состояния. После того как курсор мыши вернётся на поле документа, сообщение в строке состояния теряет смысл, поэтому обработчик события onMouseOut должен стереть его.
Исходный текст HTML-документа, содержащего описанный сценарий, приведен ниже.
<HTML>
<HEAD> <TITLE> Аннотирование ссылок </TITLE> </HEAD>
<BODY>
<Р> Поместив курсор мыши на одну из ссылок, вы увидите в строке состояния её краткое описание
<BR> <BR>
<A HREF="http://ai.rtfm.mit.edu/" onMouseOver="draw ('Отделение искусственного интеллекта Массачусетсского технологического института'); return true;"
onMouseOut="status='';">
MIT </A>
<BR><BR>
<A HREF="http://cs.stanford.edu/" onMouseOver=" draw ('Страница факультета компьютерных наук Стенфордского университета'); return true;"
onMouseOut="status='';">
Stanford </A>
<BR> <BR>
<SCRIPT LANGUAGE=”JavaScript”>
function draw (str)
{
status=str;
}
</SCRIPT>
</BODY> </HTML>
Обратите внимание, что функция draw () содержит одну команду и её использование совершенно не оправданно. Такое решение выбрано лишь для того, чтобы продемонстрировать одну важную особенность обработки события onMouseOver.
Рассмотрим атрибут onMouseOver="draw ('Отделение искусственного интеллекта Массачусетсского технологического института'); return true;". В кавычках содержится обработчик события onMouseOver. Обратите внимание на выражение return true;. Оно необходимо, так как по умолчанию браузер обрабатывает это же событие. Возвращая значение true, сценарий сообщает браузеру, что обработка события MouseOver полностью завершена. На первый взгляд может показаться, что выражение return true; можно переместить в тело функции draw (). Однако, если сделать это, смысл данной операции резко изменится. В этом случае не обработчик события будет передавать значение true браузеру, а функция будет передавать то же значение обработчику события.
Если же вы хотите, чтобы обработчик события включал в себя одну команду, его надо переписать так:
onMouseOver="return draw ('Отделение искусственного интеллекта Массачусетского технологического института');"