Основные поставщики браузеров расходятся во мнениях относительно того, что означает автономный режим.
Chrome, Safari и Firefox (начиная с версии 41) автоматически определяют, когда вы выходите из сети, а это означает, что онлайн-события и свойства запускаются автоматически, когда вы отключаете сетевой кабель.
Mozilla Firefox (до версии 41), Opera и IE используют другой подход и считают, что вы подключены к сети, если вы явно не выберете автономный режим в браузере, даже если у вас нет рабочего сетевого подключения.
Существуют веские аргументы в пользу поведения Firefox/Mozilla, которые изложены в комментариях к этому отчету об ошибке:
https://bugzilla.mozilla.org/show_bug.cgi?id=654579
Но, чтобы ответить на вопрос, вы не можете полагаться на события/свойство онлайн/офлайн, чтобы определить, действительно ли существует сетевое подключение.
Вместо этого вы должны использовать альтернативные подходы.
Раздел «Примечания» этой статьи для разработчиков Mozilla содержит ссылки на два альтернативных метода:
https://developer.mozilla.org/en/Online_and_offline_events
Если API не реализован в браузере, вы можете использовать другие сигналы, чтобы определить, находитесь ли вы в автономном режиме, включая прослушивание событий ошибок AppCache и ответов от XMLHttpRequest.
Это ссылка на пример подхода к прослушиванию событий ошибок AppCache:
http://www.html5rocks.com/en/mobile/workingoffthegrid/#toc-appcache
... и пример прослушивания сбоев XMLHttpRequest:
http://www.html5rocks.com/en/mobile/workingoffthegrid/#toc-xml-http-request
HTH, -- Чад
person
thewoolleyman
schedule
13.03.2012