|  |  |  | 
Как 
  пишутся Web-сценарии
  
 Вот 
  и закончился ликбез по JavaScript и объектной модели документов. Пришло время 
  поговорить о том, как же пишутся Web-сценарии.
  
 Прежде 
  всего, выясним, как JavaScript-код помещается в HTML-код. Для этого служит парный 
  тег <SCRIPT>. . .</SCRIPT>, внутри которого помещается код сценария. 
  Вне этого тега помещать сценарий можно, но выполняться он не будет.
  
 Вообще, 
  все Web-сценарии можно разделить на два вида: выполняющиеся при загрузке страницы 
  (загрузочные) и вызывающиеся в ответ на событие (обработчики событий). В зависимости 
  от того, является сценарий загрузочным или обработчиком, различается способ 
  его реализации.
  
 Сценарии, 
  выполняющиеся при загрузке страницы, представляют собой обычный код на JavaScript, 
  помещенный в тег <SCRIPT>. Он имеет такой вид:
  
<FORM ACTION="http://www.somesite.ru/cgi/prograra.p1">
<INPUT 
  TYPE="text" NAME="txtDate"> <SCRIPT> var d;
  
 d 
  = new Date ();
  
 document.forms[0].txtDate.value 
  = d.toString(); </SCRIPT> </FORM>
  
 Этот 
  сценарий помещает в поле ввода txtDate значение текущей даты. (О формах и элементах 
  управления см. главу 16.) Для этого он вызывает свойство value, отображающее 
  значение, введенное в поле ввода. Заметьте, что для именования поля ввода мы 
  использовали атрибут NAME, поэтому вышеприведенный код будет работать также 
  и в Navigator 4.x.
  
 Этот 
  сценарий будет выполняться непосредственно при загрузке страницы. Сначала Web-обозреватель 
  загрузит и распознает тег <FORM>, потом — тег <INPUT>, а сразу за 
  ним выполнит наш сценарий. Такие сценарии очень часто используются для занесения 
  начальных значений в элементы управления и вообще для выполнения различных предустановок.
  
 Мы 
  поместили код сценария сразу же за тегом, задающим поле ввода, к которому мы 
  обращаемся. Если бы мы поместили сценарий перед тегом, Web-обозреватель не смог 
  бы найти объект txtDate, т. к. он еще не был бы создан, и выдал бы сообщение 
  об ошибке. Имейте это в виду, когда будете писать загрузочные сценарии.
  
 Если 
  нужно, чтобы какие-либо предустановки выполнились перед тем, как будет загружен 
  какой-либо "видимый" на странице HTML-код, выполняющий их сценарий 
  помещается в секцию HTML-заголовка страницы (тег <HEAD>). В основном, 
  это касается кода, выполняющего предустановки для других сценариев, чаще всего, 
  обработчиков событий.
  
 Теперь 
  поговорим о сценарии обработчика событий. И рассмотрим пример такого обработчика:
  
 <HEAD>
  
 <SCRIPT>
  
 function 
  para_onClick() {
  
 para.style.color 
  = "#FF0000"; }
  
 </SCRIPT> 
  </HEAD> <BODY>
  
 <P 
  ID="para" STYLE="color: #0000FF" onClick="para_ondick();">Некий 
  текст.</Р>
  
 </BODY>
  
 Это 
  как раз пример сценария, помещаемого в секцию HTML-заголовка страницы. Он представляет 
  собой функцию para_ondick, чей код меняет цвет текста абзаца para. Поместив 
  сценарий в секцию HTML-заголовка, мы можем быть уверены, что Web-обозреватель 
  обработает этот код перед тем, как будет загружена страница, и "отложит" 
  определения функций в "долгий ящик", чтобы вызвать их впоследствии, 
  при наступлении соответствующего события.
  
 А 
  теперь обратимся к нашему текстовому абзацу. Что видим? Нечто странное... Откуда-то 
  взялся новый, не знакомый нам атрибут onclick. Что он делает?
  
 Это 
  не совсем атрибут. Вернее, совсем не атрибут, хотя и выглядит похоже. Таким 
  способом в HTML к какому-либо событию, происходящему в элементе страницы, привязывается 
  обработчик. Общий синтаксис такой "привязки" следующий:
  
 <Имя 
  события>="<Код сценария обработчика>"
  
 В 
  данном случае мы привязали вызов функции para_onclick в качестве обработчика 
  к событию onclick, происходящему, когда пользователь щелкает мышью по этому 
  абзацу.
  
 Вообще, 
  код этого обработчика столь мал, что его можно без всяких последствий поместить 
  прямо в тег <р>:
  
 <Р 
  ID="para" STYLE="color: #0000FF" onClick="para.style.color 
  = #'FF0000';">Heкий текст.</Р>
  
Таким образом, мы значительно уменьшим размер HTML-кода страницы, что нам совсем не помешает.
|  |  |  |