JavaScript. Подробное руководство, 6-е издание, стр. 169

13.1. Клиентский JavaScript

Объект

<b>Window</b>
является средоточием всех особенностей и прикладных интерфейсов клиентского JavaScript. Он представляет окно веб-броузера или фрейм, а сослаться на него можно с помощью идентификатора
<b>window</b>
. Объект
<b>Window</b>
определяет свойства, такие как
<b>location</b>
, которое ссылается на объект
<b>Location</b>
, определяющий URL текущего окна, и позволяет сценарию загружать в окно содержимое других адресов URL:

<b>// Установить значение свойства для переход на новую веб-страницу </b>

<b>window.location = &quot;</b><a href="http://www.oreilly.com/"><b>http://www.oreilly.com/</b></a><b>&quot;;</b>

Кроме того, объект

<b>Window</b>
определяет методы, такие как
<b>alert(),</b>
который отображает диалог с сообщением, и
<b>setTimeout(),</b>
который регистрирует функцию для вызова через указанный промежуток времени:

<b>// Ждать 2 секунды и вывести диалог с приветствием </b>

<b>setTimeout(function() { alert(&quot;Привет, Мир!&quot;); }, 2000);</b>

Обратите внимание, что программный код выше неявно использует свойство объекта

<b>window</b>
. Объект
<b>Window</b>
в клиентском JavaScript является глобальным объектом. Это означает, что объект
<b>Window</b>
находится на вершине цепочки областей видимости и что его свойства и методы фактически являются глобальными переменными и функциями. Объект
<b>Window</b>
имеет свойство
<b>window</b>
, которое всегда ссылается на сам объект. Это свойство можно использовать для ссылки на сам объект, но обычно в этом нет необходимости, если требуется просто сослаться на свойство глобального объекта окна.

Объект

<b>Window</b>
определяет также множество других важных свойств, методов и конструкторов. Полный их перечень можно найти в главе 14.

Одним из наиболее важных свойств объекта

<b>Window</b>
является свойство
<b>document</b>
: оно ссылается на объект
<b>Document</b>
, который представляет содержимое документа, отображаемого в окне. Объект
<b>Document</b>
имеет важные методы, такие как
<b>getElementByld()</b>
, который возвращает единственный элемент документа (представляющий пару из открывающего и закрывающего тегов HTML и все, что содержится между ними), опираясь на значение атрибута
<b>id</b>
элемента:

<b>// Отыскать элемент с атрибутом id=&quot;timestamp&quot; </b>

<b>var timestamp = document.getElementById(&quot;timestamp&quot;);</b>

Объект

<b>Element</b>
, возвращаемый методом
<b>getElementByld(),</b>
также имеет ряд важных свойств и методов, позволяющих сценарию извлекать содержимое элемента, устанавливать значения его атрибутов и т. д.:

<b>// Если элемент пуст, вставить в него текущую дату и время </b>

<b>if (timestamp.firstChild == null)</b>

<b>  timestamp.appendChild(document.createTextNode(new Date().toString()));</b>

Приемы получения ссылок на элементы, обхода элементов и изменения содержимого документа описываются в главе 15.

Каждый объект

<b>Element</b>
имеет свойства
<b>style</b>
и
<b>className</b>
, позволяющие определять стили CSS элемента документа или изменять имена классов CSS, применяемых к элементу. Установка этих свойств, имеющих отношение к CSS, изменяют визуальное представление элемента документа:

<b>// Явно изменить представление элемента заголовка </b>

<b>timestamp.style.backgroundColor = &quot;yellow&quot;;</b>

<b>// Или просто изменить класс и позволить определять особенности </b>

<b>// визуального представления с помощью каскадных таблиц стилей: </b>

<b>timestamp.className = &quot;highlight&quot;;</b>

Свойства

<b>style</b>
и
<b>className</b>
, а также другие приемы управления стилями CSS описываются в главе 16.

Другим важным множеством свойств объектов

<b>Window</b>
,
<b>Document</b>
и
<b>Element</b>
являются свойства, ссылающиеся на обработчики событий. Они позволяют сценариям определять функции, которые должны вызываться асинхронно при возникновении определенных событий. Обработчики событий позволяют программам на языке JavaScript изменять поведение окон, документов и элементов, составляющих документы. Свойства, ссылающиеся на обработчики событий, имеют имена, начинающиеся с «on», и могут использоваться, как показано ниже:

<b>// Обновить содержимое элемента timestamp, когда пользователь щелкнет на нем </b>

<b>timestamp.onclick = function() { this.innerHTML = new Date().toString(); }</b>

Одним из наиболее важных обработчиков событий является обработчик

<b>onload</b>
объекта
<b>Window</b>
. Это событие возникает, когда содержимое документа, отображаемое в окне, будет загружено полностью и станет доступно для выполнения манипуляций. Программный код на языке JavaScript обычно заключается в обработчик события
<b>onload</b>
. События являются темой главы 17. Пример 13.1 использует обработчик
<b>onload</b>
и демонстрирует дополнительные приемы получения ссылок на элементы документа, изменения классов CSS и определения обработчиков других событий в клиентском JavaScript. В этом примере программный код на языке JavaScript заключен в HTML-тег
<b>&lt;script&gt;</b>
. Подробнее этот тег описывается в разделе 13.2. Обратите внимание, что в этом примере имеется определение функции, заключенное в определение другой функции. Вложенные функции часто используются в клиентских сценариях на языке JavaScript, особенно в виде обработчиков событий.