Real online
и offline
events
В некоторых современных браузерах существуют специальные события online
и offline
.
Но, к сожалению, они работают не так, как хотелось бы.
В Firefox и IE событие offline
случается, когда пользователь вручную выберет Work Offline в меню.
В Chrome offline
означает, что нет ни одного активного сетевого интерфейса.
Но даже если компьютер подключен к Wi-Fi сети, это не значит, что есть доступ в интернет.
Хотя Chrome при этом будет считать, что он online
.
Поэтому, чтобы на самом деле знать, есть ли доступ в интернет,
приходится пинговать какой-нибудь урл и следить за ответами.
Что и делает эта простая библиотека:
no.line.init({
url: '/ping/',
interval: 10000
});
$(window)
.on('no-online no-offline', function(e) {
var is_online = (e.type === 'no-online');
...
});
В no.line.init
можно передать url
, который нужно пинговать и interval
между пингами.
Дефолтные параметры:
{
url: '/',
interval: 5000
}
После вызова no.line.init
можно подписаться на события no-online
и no-offline
, генерируемые на window
.
Кроме того, библиотека поддерживает нативные события online/offline
и Page Visibility API.
Пингование останавливается, если страница не в фокусе или же в оффлайне.