Я сосредоточен на оффлайновых веб-приложениях с HTML5 на данный момент. Я пришел к тому моменту, когда мне нужен надежный метод проверки подключения пользователя, чтобы определить, находится ли он онлайн или оффлайн. Поскольку я узнал, что свойство navigator.onLine очень ненадежное, я нашел очень хороший метод, используя область Fallback манифеста кэша. Я реализовал два похожих решения из двух разных книг, один из которых - «Представляем HTML5» (Lawson/Sharp) и один «HTML5: The Missing Manual» (MacDonald). Я предполагаю, что это проблема кеширования HTTP (я использую Apache и localhost), о которых я действительно не знаю слишком много. Я вставил свой код, это несколько файлов, но очень мало кода.HTML5: использование отката манифеста для проверки подключения пользователя
адаптированное решение от Вводя HTML5: http://pastebin.com/UGsmnAtK
адаптированного решение от HTML5 - недостающее руководство: http://pastebin.com/8v5ck3E6
Испытан с Chrome 16 ...
=== То, что я хочу ===
- запустить приложение с пустым кешем и работает apache
- нажмите на кнопку -> предупреждение «Интернет» отображается
- остановка апач
- нажмите на кнопку -> предупреждение «Offline» отображается
- начало апач
- нажмите кнопку -> Сигнал «Online» показано
=== Что происходит ===
Представляя решение HTML5: - запустить приложение с пустой кэш-памяти и работает апача - нажмите на кнопку -> предупреждение «Интернет» отображается - остановка апача - нажмите на кнопку -> предупреждение «Интернет» отображается - запуск апача - нажмите на кнопку -> предупреждение «Интернет» отображается
HTML5: недостающее руководство решения: - запустить приложение с пустым кэшем-памятью и работает апач - нажмите на кнопку -> предупреждение «Интернет» отображаются - остановка апача - нажмите на кнопку -> предупреждение «Интернет» отображается - start apache - нажмите кнопку -> появится предупреждение «В сети»
Другие сценарии и варианты использования не срабатывают аналогичным образом. Книги обещают, что вы можете в любое время проверить подключение пользователя, используя свои методы. Поэтому я думаю, что я делаю что-то не так. Я с благодарностью принимаю любые идеи по этой теме.
Приветствие, Felix
Привет, Морис, большое спасибо за ваш ответ, вы действительно очень помогли мне! Я просто попытался добавить строку запроса, и это действительно работает! Каждый щелчок на кнопке вызывает запрос GET на 'online.js'. Может быть, я должен узнать больше обо всех этих методах Apache. Первый пост в stackoverflow, немедленный успех! Cheers, Felix – Felix
Привет, Феликс, ничего конкретного Apache об этом, я просто немного изменил URL-адрес, чтобы избежать использования кэша онлайн-браузера. Пожалуйста, примите в качестве ответа, чтобы помочь другим, кто сталкивается с этой проблемой. – Maurice