Сейчас я сосредоточен на автономных веб-приложениях с HTML5. Я пришел к тому, что мне нужен надежный метод проверки подключения пользователя, чтобы определить, в данный момент он / она онлайн или офлайн. Поскольку я узнал, что свойство navigator.onLine крайне ненадежно, я нашел очень хороший метод, использующий область Fallback манифеста кэша. Я реализовал два аналогичных решения из двух разных книг, одна из которых «Представляем HTML5» (Лоусон / Шарп), а другая «HTML5: Пропавшее руководство» (Макдональд). Я полагаю, что это проблема кеширования HTTP (я использую Apache и localhost), о которой я не слишком много знаю. Я вставил свой код, это несколько файлов, но очень мало кода.
Адаптированное решение от внедрения HTML5:
http://pastebin.com/UGsmnAtK
Адаптированное решение из HTML5 - недостающее руководство:
http://pastebin.com/8v5ck3E6
Протестировано с Chrome 16 ...
=== Что я хочу ===
- запустить приложение с пустым кешем и запустить apache
- нажмите на кнопку -> отображается предупреждение «Онлайн»
- остановка apache
- нажмите на кнопку -> отображается предупреждение «Не в сети»
- запустить apache
- нажмите на кнопку -> отображается предупреждение «Онлайн»
=== Что происходит ===
Представляем решение HTML5:
- запустить приложение с пустым кешем и запустить apache
- нажмите кнопку -> отображается предупреждение «Онлайн»
- остановить апач
- нажмите кнопку -> отображается предупреждение «Онлайн»
- запустить Apache
- нажмите кнопку -> отображается предупреждение «Онлайн»
HTML5: отсутствующее решение вручную:
- запустить приложение с пустым кешем и запустить apache
- нажмите кнопку -> отображается предупреждение «Онлайн»
- остановить апач
- нажмите кнопку -> отображается предупреждение «Онлайн»
- запустить Apache
- нажмите кнопку -> отображается предупреждение «Онлайн»
Другие сценарии и варианты использования не работают аналогичным образом. Книги обещают, что вы можете проверить подключение пользователя в любое время, используя его методы. Так что, думаю, я здесь что-то не так делаю. Я бы с радостью принял любые идеи на эту тему.
Ура,
Felix