Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Обратите внимание, что броузеры проверяют файл объявления и обновляют кэш асинхронно, после (или во время) загрузки копии приложения из кэша. Для простых веб-приложений это означает, что после обновления файла объявления пользователь должен дважды загрузить приложение, чтобы получить обновленную версию: в первый раз будет загружена старая версия из кэша, после чего произойдет обновление файлов в кэше, а во второй раз из кэша будет загружена новая версия.

В ходе обновления кэша броузер запускает множество событий, что дает возможность зарегистрировать их обработчики и извещать пользователя. Например:

applicationCache.onupdateready = function {

var reload = confirm("Доступна новая версия приложения, которая\n” +

"будет использована при следующем запуске.\n" +

"Хотите ли перезапустить ее сейчас?");

if (reload) location.reload;

}

Обратите внимание, что этот обработчик событий регистрируется в объекте

ApplicationCache
, на который ссылается свойство
applicationCache
объекта
Window
. Броузеры, поддерживающие кэш приложений, определяют это свойство. Помимо события «updateready», показанного выше, существует еще семь различных событий, имеющих отношение к кэшу приложений. В примере 20.4 демонстрируются простые обработчики, которые выводят сообщения, информирующие пользователя о ходе обновления кэша и о его текущем состоянии.

Пример 20.4. Обработка событий кэша приложений

// Эту функцию используют все обработчики событий, реализованные ниже, и выводят

// с ее помощью сообщения, информирующие о состоянии кэша приложений.

// Поскольку все обработчики отображают сообщения таким способом, они

// возвращают false, чтобы отменить дальнейшее распространение события

// и предотвратить вывод сообщений самим броузером,

function status(msg) {

// Вывести сообщение в элементе документа с id="statusline"

document.getElementById("statusline").innerHTML = msg;

console.log(msg); // А также в консоли для отладки

}

// Каждый раз, когда приложение загружается, броузер проверяет файл объявления.

// В начале этого процесса первым всегда генерируется событие "checking",

window.applicationCache.onchecking = function {

status("Проверка наличия новой версии.");

return false;

};

// Если файл объявления не изменился и приложение уже имеется в кэше,

// генерируется событие "noupdate" и процедура проверки заканчивается,

window.applicationCache.onnoupdate = function {

status("Версия приложения не изменилась.")

return false;

};

// Если приложение отсутствует в кэше или если изменился файл объявления,

// броузер загрузит и поместит в кэш все, что перечислено в файле объявления.

// Событие "downloading" свидетельствует о начале этой процедуры загрузки,

window.applicationCache.ondownloading = function {

status("Загружается новая версия");

window.progresscount = 0; // Используется в обработчике "progress" ниже

return false;

};

// В ходе загрузки периодически генерируются события "progress”,

// обычно после загрузки каждого файла.

window.applicationCache.onprogress = function(e) {

// Объект события должен соответствовать событию "progress" (подобному тому,

  • Читать дальше
  • 1
  • ...
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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