Чтение онлайн

на главную - закладки

Жанры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Window
.

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

14.1. Таймеры

Функции

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

Метод

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

Метод

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

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

Подобно

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

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

setTimeout, setlnterval
и
clearlnterval.

Пример 14.1.

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

/*

* Планирует вызов или вызовы функции f в будущем.

* Ожидает перед первым вызовом start миллисекунд, затем вызывает f

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

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

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

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

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

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

* не блокируется: она сразу же возвращает управление.

*/

function invoke(f, start, interval, end) {

if (!start) start =0; //По умолчанию через 0 мс

if (arguments.length <= 2) // Случай однократного вызова

setTimeout(f, start); // Вызвать 1 раз через start мс.

else { // Случай многократного вызова

setTimeout(repeat, start); // Начать вызовы через start мс

function repeat { // Планируется на вызов выше

var h = setlntervalQ, interval); // Вызывать f через interval мс.

// Прекратить вызовы через end мс, если значение end определено

if (end) setTimeout(function { clearlnterval(h); }, end);

}

}

}

По исторически сложившимся причинам в первом аргументе методам

setTimeout
и
setlnterval
допускается передавать строку. В этом случае строка будет интерпретироваться (как с применением функции
eval
) через указанный интервал, времени. Спецификация HTML5 (и все броузеры, кроме IE) допускает передавать методам
setTimeout
и
setlnterval
дополнительные аргументы после первых двух. Все эти дополнительные аргументы будут передаваться функции, вызов которой планируется этими методами. Однако если требуется сохранить совместимость с IE, эту возможность использовать не следует.

Поделиться:
Популярные книги

Последний Герой. Том 1

Дамиров Рафаэль
1. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Последний Герой. Том 1

Я до сих пор царь. Книга XXXII

Дрейк Сириус
32. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор царь. Книга XXXII

Жена неверного генерала, или Попаданка на отборе

Удалова Юлия
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Жена неверного генерала, или Попаданка на отборе

Неучтенный элемент. Том 1

NikL
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 1

Законы Рода. Том 5

Мельник Андрей
5. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 5

Кодекс Охотника. Книга VIII

Винокуров Юрий
8. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VIII

Эпоха Опустошителя. Том VII

Павлов Вел
7. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том VII

Хозяин Теней 5

Петров Максим Николаевич
5. Безбожник
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Хозяин Теней 5

Последний Паладин. Том 13

Саваровский Роман
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 13

Распутье

Басаргин Иван Ульянович
Сибириада
Проза:
военная проза
историческая проза
5.00
рейтинг книги
Распутье

Последний Паладин. Том 14

Саваровский Роман
14. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.75
рейтинг книги
Последний Паладин. Том 14

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Наследие Маозари 9

Панежин Евгений
9. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
сказочная фантастика
6.25
рейтинг книги
Наследие Маозари 9

Ну, здравствуй, Герой!

Француз Михаил
2. Здравствуй, Мир!
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Ну, здравствуй, Герой!