Основные поставщики браузеров расходятся во мнениях о том, что означает «офлайн».
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
HTH, - Чад