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 = "</b><a href="http://www.oreilly.com/"><b>http://www.oreilly.com/</b></a><b>";</b>
Кроме того, объект
<b>Window</b>
определяет методы, такие как
<b>alert(),</b>
который отображает диалог с сообщением, и
<b>setTimeout(),</b>
который регистрирует функцию для вызова через указанный промежуток времени:
<b>// Ждать 2 секунды и вывести диалог с приветствием </b>
<b>setTimeout(function() { alert("Привет, Мир!"); }, 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="timestamp" </b>
<b>var timestamp = document.getElementById("timestamp");</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 = "yellow";</b>
<b>// Или просто изменить класс и позволить определять особенности </b>
<b>// визуального представления с помощью каскадных таблиц стилей: </b>
<b>timestamp.className = "highlight";</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><script></b>
. Подробнее этот тег описывается в разделе 13.2. Обратите внимание, что в этом примере имеется определение функции, заключенное в определение другой функции. Вложенные функции часто используются в клиентских сценариях на языке JavaScript, особенно в виде обработчиков событий.