Основные поставщики браузеров расходятся во мнении о том, что означает «офлайн».
Chrome и Safari обнаружат, когда вы перейдете в автономный режим, что означает, что «онлайн» события и свойства будут срабатывать автоматически при отключении сетевого кабеля.
Firefox (Mozilla), 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
НТН,
- Чад