Итак, мне нужна была поддержка онлайн/оффлайн событий в браузерах (напомню, что согласно проекту html5 они возникают при появлении/исчезновении соединения соответственно).
В настоящее время Mozilla и IE8 поддерживает эти события.
А это уже много.
Все бы ничего, но онлайн-мероприятие не дает 100% гарантии, что пользователь онлайн.
Он гарантирует, что какое-то соединение есть, но не подключение к интернету (если кто не видел, пояснительное видео об этой теме).
Поэтому необходимы дополнительные проверки доступности внешнего мира.
Офлайн-событие гарантирует отсутствие соединения, что в некоторых случаях может быть удобно; разработчику не нужно выполнять никаких дополнительных действий.
Я не думаю, что реализация этих событий со временем изменится, поэтому если мы хотим точно знать, есть связь или нет, нам нужно добавить реализацию самим.
С Мозиллой и е8 определились (всё хорошо, но надо немного подправить), а что делать с остальными браузерами, в которых этих событий пока нет? Мы определим их сами во время инициализации страницы и после Ajax-запросов.
И мы сделаем это, используя jquery c триггер/привязку в качестве плагина.
Основные идеи плагина
0) Удобный интерфейс.
$(document.body).
bind('xonline', function(event) { .
});
$(document.body).
bind('xoffline', function(event) { .
});
Я использую xonline, xoffline, потому что онлайн и офлайн уже реализованы в браузере, и мы, по сути, делаем надстройку над этими событиями.
1) Естественно, плагин должен поддерживать онлайн-, офлайн-события для браузеров, в которых есть эти события.
При работе в сети эти браузеры проходят дополнительную проверку на подключение к Интернету.
В автономном режиме мы ничего не проверяем.
2) Для браузеров, не поддерживающих данные действия, проверка изменения состояния сети происходит после ajax-запросов.
Допустим, соединение было, но запрос не увенчался успехом.
В этом случае делаем дополнительную проверку соединения как в пункте 1 и при необходимости запускаем триггер('xoffline').
Как использовать?
Все просто, создаем обработчики двух событий xonline, xoffline. Все остальное плагин сделает сам.Вы можете увидеть, как работает плагин, открыв пример , а затем отключается от сети.
В ie 8 и Firefox 3.5 xoffline будет работать, и прямоугольник будет перекрашен.
В Google Chrome, Opera, Safari и более ранних версиях ie и Mozilla помимо отключения от сети вам также необходимо выполнить неудачный запрос для запуска автономного события.
Если вам жизненно необходимо постоянно следить за соединением, то плагин поддерживает метод $.
checkWebstatus(time) (время — это количество секунд).
Этот метод в браузерах, которые изначально не поддерживают события онлайн/оффлайн, проверяет соединение каждые несколько секунд. Пример с checkWebStatus Успешно протестировано в Mozilla 3.5.3, IE8, IE6, Chrome, Opera 10. Загрузите плагин Пример Пример с дополнительной проверкой Внутреннее устройство плагина Обновление 10.10.2009 Исправлен плагин: 1) Исправлена ошибка с проверкой состояния сети в автономном режиме.
2) События переименованы с xonline, xoffline в более понятные trueonline, trueoffline. 3) Удалены методы и переменные из окна.
4) Добавлена возможность настройки плагина.
5) Плагин имеет ваша собственная страница.
6) Теперь он называется TrueOnline плагин :) Спасибо всем за мудрые советы и тестирование.
Теги: #xonline плагин #онлайн-событие #оффлайн-событие #jQuery
-
Осен, Ивар Андреас
19 Oct, 24 -
Как Разработать Фронтенд, Не Ночуя На Заводе
19 Oct, 24 -
Закрытие Мечты
19 Oct, 24 -
Симула – 50 Лет Ооп
19 Oct, 24 -
100 Идей Для A/B-Тестирования. Первая Часть
19 Oct, 24 -
Изменения В Алгоритме Ранжирования Яндекса
19 Oct, 24