JavaScript. Подробное руководство, 6-е издание
Шрифт:
onnoupdate
Если приложение не изменилось, сообщает пользователю, что он или она работает с текущей версией.
А теперь, после краткого обзора логики работы приложения PermaNote, в примере 20.7 приводится ее реализация.
Пример 20.7'. permanote.js
// Некоторые необходимые переменные
var editor, statusline, savebutton, idletimer;
// При первой загрузке приложения
window.onload = function {
// Инициализировать локальное хранилище, если это первый запуск
if (localStorage.note == null)
localStorage.note = "";
if (localStorage.lastModified == null) localStorage.lastModified = 0;
if (localStorage.lastSaved == null) localStorage.lastSaved = 0;
// Отыскать элементы, которые составляют пользовательский интерфейс редактора.
// Инициализировать глобальные переменные,
editor = document.getElementById("editor");
statusline = document.getElementById("statusline");
savebutton = document.getElementById("savebutton");
editor.value = localStorage.note; // Восстановить сохраненную заметку
editor.disabled = true; // Но запретить редактирование до синхр.
// При вводе нового текста в элемент textarea
editor.addEventListener("input",
function (e) {
// Сохранить новую заметку в localStorage
localStorage.note = editor.value;
localStorage.lastModified = Date.now;
// Переустановить таймер ожидания
if (idletimer) clearTimeout(idletimer);
idletimer = setTimeout(save, 5000);
// Разрешить кнопку сохранения
savebutton.disabled = false;
},
false);
// При каждой загрузке приложения пытаться синхронизироваться с сервером
sync;
};
// Сохраняет заметку на сервере перед уходом со страницы
window.onbeforeunload = function {
if (localStorage.lastModified > localStorage.lastSaved) save;
};
// Сообщить пользователю перед переходом в автономный режим
window.onoffline = function { status("Автономный режим"); }
// При подключении к сети выполнить синхронизацию,
window.ononline = function { sync; };
// Сообщить пользователю, если доступна новая версия приложения.
// Здесь можно было бы выполнить перезагрузку принудительно, вызвав
// метод location.reload
window.applicationCache.onupdateready = function {
status("Доступна новая версия приложения. " +
"Чтобы использовать ее, необходимо перезагрузить приложение ”);
};
// Также сообщить пользователю, если он использует последнюю версию приложения,
window.applicationCache.onnoupdate = function {
status("Bы используете последнюю версию приложения.");
};
// Функция отображения сообщения в строке состояния
function status(msg) { statusline.innerHTML = msg; }
// Выгружает текст заметки на сервер (если сеть подключена).
// Автоматически вызывается через 5 секунд простоя после изменения текста заметки,
function save {
if (idletimer) clearTimeout(idletimer);
idletimer = null;
if (navigator.onLine) {
Поделиться:
Популярные книги
Гримуар темного лорда II
2. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации
1. ТБ
Фантастика:
боевая фантастика
7.33
рейтинг книги
Древесный маг Орловского княжества 5
5. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
По осколкам твоего сердца
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56
рейтинг книги
На границе империй. Том 10. Часть 5
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Вернувшийся: Корпорация. Том III
3. Вернувшийся
Фантастика:
космическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Неучтенный элемент. Том 9
9. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Черный Маг Императора 6
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Неудержимый. Книга XXX
30. Неудержимый
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Мы друг друга не выбирали
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
5.00
рейтинг книги
Третий Генерал: Тома I-II
1. Третий Генерал
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Черный рынок
6. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Кодекс Охотника. Книга XII
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50