— Pixels Commander

[ In English, На русском ]

[:ru]OnlineJS — легковесная и простая библиотека для работы со статусом интернет — соединения[:en]OnlineJS — lightweight and easy to use library to check your internet connection status and react on it[:]

[:ru]При разработке мобильных Web приложений часто встречается задача определения статуса интернет — соединения, задача небольшая и каждый решает ее удобным для себя способом, Online JS — это надежная подборка лучших практик на тему, к тому же весьма небольшая по размеру и простая в использовании.

[:en]Detecting internet connection status with JavaScript is generic problem during mobile web applications or dynamic sites development and everybody solves it in his own way. Online JS is a compilation of best practices for detecting connection status, it`s reliable, fast, very lightweight and compatible with all popular frameworks library that is very easy to use.

[:][:ru]

Демо

Пользоваться библиотекой просто — добавьте online.min.js в проект и в любом удобном месте проверяйте:
window.onLine === true

Так же вы можете реагировать на подключение или отключение от интернета задав обработчики window.onLineHandler / window.offLineHandler.

Из оптимизаций используются:

  • проверка соединения в фоновом режиме,
  • запрос лишь заголовков для минимизации траффика,
  • слушание событий online, offline, их дополнительная проверка.

Многие справшивают: «Почему бы не обойтись navigator.onLine для проверки соединения?». Про это свойство и его коварство написано немало. Главная проблема — свойство реализовано не консистентно среди браузеров и зачастую отражает лишь наличие подключения к локальной сети, а в некоторых версиях FireFox зависит только от включения / выключения режима автономного просмотра.

Чистый navigator.onLine для критически важных задач не подходит. А Online JS подходит, потому что использует это свойство и соответствующие события только как один из механизмов и затем перепроверяет статус соединения. Вы можете положиться на Online JS.

Репозиторий на GitHub[:en]

Simple example

Include this library into your project and just check is window.onLine === true

Define window.onLineHandler or window.offLineHandler functions to handle status changes.

Library uses such optimizations:

  • checks status in background mode,
  • requests only headers to minimize traffic,
  • listens for window.online/offline events and verifies them.

P.S. I`m often asked: «Why library does not use navigator.onLine ?». This property is a bit underhandled and inconsistent between different browsers. For many of them it only shows status of local network connection and for some versions of FireFox it depends only on autonomic mode settings. So using this property in critical tasks is not good idea. Online JS is a right way for serious project because library uses navigator.onLine only as one of possible triggers and then makes more tests of internet connection status. You can rely on Online JS.

GitHub repository[:]

7 comments
  1. Eugene Krevenets (Hyzhak) says: 30.05.201210:33 пп

    смотрю проверка online дергает «http://www.pixelsresearch.com/online.php», не боишься, что популярность положит сайт? 🙂

  2. Аноним says: 30.05.201210:40 пп

    Если не хочешь зависеть от сайта — можно переназначить window.onlineCheckURL
    А траффика я не боюсь — запрос статичный, если что возьму сервер помощнее 😉

  3. pride says: 10.07.20129:44 пп

    Однозначно не самое популярное решение дергать страничку по таймеру. В чем плюсы?

  4. Аноним says: 10.07.201210:41 пп

    Какое решение на ваш взгляд будет работать лучше?

  5. Morozzov says: 13.07.20121:05 дп

    Помню в одном AIR приложении через URLLoader по таймеру дергал google.com))

  6. Аноним says: 13.07.20121:41 дп

    Это заманчивый вариант и для JavaScript, с удовольствием бы поступил так. Жаль, что кросс — доменная политика JS требует специфических хедеров в ответе сервера, выставить которые можно только имея контроль над сервером.

  7. Raul Padilla Calderon says: 16.04.201411:54 дп

    it work fine, thx

Submit comment