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

YUI

YUI ( http://developer.yahoo.com/yui/) - это библиотека, созданная компанией Yahoo! для внутренних нужд и используемая ею в своих веб-страницах. Подобно Dojo, это большая, всеохватывающая библиотека утилит и функций для работы с DOM, виджетами и т. д. Существует две несовместимые версии, известные как YUI 2 и YUI 3.

Closure

Библиотека Closure (Jittp:Hcode.google.com/closure/library/) - это клиентская библиотека, которую компания Google использует в своих веб-приложениях Gmail, Google Docs и в других. Эта библиотека предназначена для использования совместно с компилятором Closure ( http://code.google.com/closure/compiler/)^ который удаляет из библиотеки неиспользуемые функции. Благодаря тому, что перед развертыванием веб-приложения из него удаляется весь ненужный программный код, создатели библиотеки Closure избежали необходимости заботиться о ее компактности и добавили в библиотеку Closure обширный набор утилит.

GWT

GWT, Google Web Toolkit ( http://code.google.com/webtoolkit/), - это совершенно иной тип клиентских фреймворков. Он определяет прикладной интерфейс веб-приложений на языке Java и предоставляет компилятор для преобразования Java-программ в совместимые сценарии на клиентском JavaScript. Фреймворк GWT используется в некоторых программных продуктах компании Google, но не так широко, как библиотека Closure.

14

Объект Window

В главе 13 был представлен объект

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

• В разделе 14.1 демонстрируется, как с помощью функций

<b>setTimeout()</b>
и
<b>setlnterval()</b>
зарегистрировать собственную функцию для вызова в определенные моменты времени в будущем.

• В разделе 14.2 описывается, как использовать свойство

<b>location</b>
, чтобы получить URL-адрес текущего документа и загрузить новый документ.

• В разделе 14.3 описывается свойство

<b>history</b>
и демонстрируется, как перемещаться взад и вперед по списку ранее посещавшихся страниц.

• В разделе 14.4 демонстрируется, как использовать свойство

<b>navigator</b>
для получения информации о производителе броузера и как использовать свойство
<b>screen</b>
для определения размеров рабочего стола.

• В разделе 14.5 демонстрируется, как выводить простые диалоги с текстовыми сообщениями, используя методы

<b>alert(),</b>
<b>confirm()</b>
и
<b>prompt()</b>
, и как отображать диалоги с разметкой HTML с помощью метода
<b>showModalDialog()</b>
.

• В разделе 14.6 описывается, как регистрировать обработчик

<b>onerror</b>
, который будет вызываться при появлении необработанных исключений.

• В разделе 14.7 рассказывается о том, что идентификаторы и имена HTML-элементов используются в качестве свойств объекта

<b>Window</b>
.

• В самом длинном разделе 14.8 описывается, как открывать и закрывать окна броузера и как писать JavaScript-код, призванный взаимодействовать с несколькими окнами и фреймами.

14.1. Таймеры

Функции

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

Метод

<b>setTimeout()</b>
объекта Window планирует запуск функции через определенное число миллисекунд. Метод
<b>setTimeout()</b>
возвращает значение, которое может быть передано методу
<b>clearTimeout()</b>
, чтобы отменить запланированный ранее запуск функции.

Метод

<b>setlnterval()</b>
похож на
<b>setTimeout(),</b>
за исключением того, что он автоматически заново планирует повторное выполнение через указанное количество миллисекунд:

<b>setInterval(updateClock, 60000); // Вызывать updateClock() через каждые 60 сек.</b>

Подобно

<b>setTimeout(),</b>
метод
<b>setlnterval()</b>
возвращает значение, которое может быть передано методу
<b>clearlnterval()</b>
, чтобы отменить запланированный запуск функции.

В примере 14.1 определяется вспомогательная функция, которая ожидает указанный интервал времени, многократно вызывает указанную функцию и затем отменяет запланированные вызовы по истечении другого заданного интервала времени. Этот пример демонстрирует использование методов

<b>setTimeout(), setlnterval()</b>
и
<b>clearlnterval().</b>

Пример 14.1. Вспомогательная функция для работы с таймером

<b>/*</b>

<b>* Планирует вызов или вызовы функции f() в будущем.</b>

<b>* Ожидает перед первым вызовом start миллисекунд, затем вызывает f()</b>

<b>* каждые interval миллисекунд и останавливается через start+end миллисекунд.</b>

<b>* Если аргумент interval указан, а аргумент end нет, повторяющиеся вызовы функции f</b>

<b>* никогда не прекратятся. Если отсутствуют оба аргумента, interval и end,</b>

<b>* тогда функция f будет вызвана только один раз, через start миллисекунд.</b>

<b>* Если указан только аргумент f, функция будет вызвана немедленно, как если бы</b>

<b>* в аргументе start было передано число 0. Обратите внимание, что вызов invokeQ</b>