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

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

Жанры

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

Чтобы выполняться в автономном режиме, веб-приложение должно иметь возможность выяснить, работает ли оно в автономном режиме, и определять моменты подключения и отключения от сети. Проверить режим работы броузера можно с помощью свойства

navigator.onLine
. А определить изменение состояния подключения можно, зарегистрировав обработчики событий «online» и «offline» в объекте
Window
.

Эта глава завершается простым примером автономного веб-приложения, демонстрирующим использование этих приемов. Приложение называется

PermaNote
– это простое приложение
управления заметками, которое сохраняет текст, введенный пользователем, в объекте
localStorage
и выгружает его на сервер, когда соединение с Интернетом будет доступно. [56]

56

Идея этого примера была подсказана приложением Halfnote, написанным Аароном Будманом (Aaron Boodman). Приложение Halfnote было одним из первых автономных веб-приложений.

Приложение PermaNote дает пользователю создать единственную заметку и игнорирует проблемы аутентификации и авторизации - предполагается, что сервер обладает некоторым механизмом, позволяющим ему отличать одного пользователя от другого без использования какой-либо страницы входа. Реализация приложения PermaNote состоит из трех файлов. В примере 20.5 приводится содержимое файла объявления. В нем перечислены остальные два файла и указывается, что URL «note» не должен кэшироваться: этот URL-адрес используется для чтения и записи заметки на сервере.

Пример 20.5. permanote.appcache

CACHE MANIFEST

# PermaNote v8

permanote.html

permanote.js

NETWORK:

note

В примере 20.6 приводится второй файл приложения PermaNote: это HTML-файл, который реализует пользовательский интерфейс простого редактора. Он отображает элемент <textarea> с панелью инструментов вдоль верхнего края и строкой состояния для сообщений вдоль нижнего края. Обратите внимание, что тег <html> имеет атрибут manifest.

Пример 20.6. permanote.html

<!DOCTYPE HTML>

<html manifest="permanote.appcache">

<head>

<title>PeflaKTop PermaNote</title>

<script src=”permanote. js"x/script>

<style>

#editor { width: 100%: height: 250px; }

#statusline { width: 100%: }

</style>

</head>

<body>

<div id="toolbar">

<button id="savebutton" onclick="save">Сохранить</button>

<button onclick="sync">Синхронизировать</button>

<button onclick="applicationCache.update">0бновить
пpилoжeниe</button>

</div>

<textarea id="editor"></textarea>

<div id="statusline"></div>

</body>

</html>

Наконец, в примере 20.7 приводится сценарий на языке JavaScript, который обеспечивает работу веб-приложения PermaNote. Он определяет функцию

status
для отображения сообщений в строке состояния, функцию
save
– для сохранения текущей версии заметки на сервере и функцию
sync
– для синхронизации серверной и локальной копии заметки. Функции
save
и
sync
используют приемы управления протоколом HTTP, описанные в главе 18. (Интересно отметить, что функция
save
использует HTTP-метод «PUT» вместо более типичного для таких случаев метода «POST».)

Помимо этих трех основных функций в примере 20.7 определяются также обработчики событий. Чтобы обеспечить синхронизацию локальной и серверной копий заметки, приложению требуется довольно много обработчиков событий:

onload

Пытается загрузить заметку с сервера, если там хранится более новая ее версия, и по завершении синхронизации разрешает доступ к окну редактора. Функции

save
и
sync
выполняют HTTP-запросы и регистрируют обработчик события «onload» в объекте
XMLHttpRequest
, чтобы определить момент, когда выгрузка или загрузка будут завершены.

onbeforeunload

Сохраняет текущую версию заметки на сервере, если она еще не была выгружена.

oninput

Всякий раз, когда текст в элементе

<textarea>
изменяется, он сохраняется в объекте
localStorage
, и запускается таймер. Если пользователь не продолжит редактирование в течение 5 секунд, заметка будет выгружена на сервер.

onoffline

Когда броузер переключается в автономный режим, в строке состояния выводится сообщение.

ononline

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

onupdateready

Если появилась новая версия приложения, выводится сообщение в строке состояния, сообщающее об этом пользователю.

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

Эволюционер из трущоб

Панарин Антон
1. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб

Портрет дьявола: Собрание мистических рассказов

Скотт Вальтер
Проза:
классическая проза
8.09
рейтинг книги
Портрет дьявола: Собрание мистических рассказов

Семь Нагибов на версту

Машуков Тимур
1. Семь, загибов на версту
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Семь Нагибов на версту

Собрание сочинений. Т.24. Из сборников:«Что мне ненавистно» и «Экспериментальный роман»

Золя Эмиль
Документальная литература:
критика
публицистика
5.00
рейтинг книги
Собрание сочинений. Т.24. Из сборников:«Что мне ненавистно» и «Экспериментальный роман»

Неудержимый. Книга XII

Боярский Андрей
12. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XII

Гром Раскатного. Том 1

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

Лондон

Резерфорд Эдвард
The Big Book
Проза:
историческая проза
6.67
рейтинг книги
Лондон

Избранное

Лукницкий Павел Николаевич
Проза:
советская классическая проза
5.00
рейтинг книги
Избранное

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Судьба

Золотарёв-Якутский Николай Гаврилович
Проза:
историческая проза
советская классическая проза
5.00
рейтинг книги
Судьба

Лекции профессора Московской Духовной Академии А. И. Осипова

Осипов Алексей Ильич
Религия и эзотерика:
религия
5.00
рейтинг книги
Лекции профессора Московской Духовной Академии А. И. Осипова

Имперец. Том 3

Романов Михаил Яковлевич
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.50
рейтинг книги
Имперец. Том 3

Иди на Голгофу. Гомо советикус. Распутье. Русская трагедия

Зиновьев Александр Александрович
Документальная литература:
публицистика
5.00
рейтинг книги
Иди на Голгофу. Гомо советикус. Распутье. Русская трагедия

Кто изобрел современную физику? От маятника Галилея до квантовой гравитации

Горелик Геннадий
Научно-образовательная:
история
физика
6.25
рейтинг книги
Кто изобрел современную физику? От маятника Галилея до квантовой гравитации