jQuery плагін для обробки подій online / offline в IE 8

Отже, мені знадобилася підтримка подій online / offline в браузерах (нагадаю, що згідно з чернетки html5 вони виникають при появі / зникнення з'єднання відповідно). На даний момент Mozilla і IE8 ці події підтримують. А це вже немало.

Все б добре, але online подію на 100% не гарантує, що користувач в онлайні. Воно гарантує, що є якесь з'єднання, але не зв'язок з інтернетом. Тому необхідна додаткова перевірка на доступність зовнішнього світу. Подія offline гарантує, що зв'язку немає, що може бути зручним в деяких випадках, ніяких додаткових дій розробнику здійснювати не треба.

Не думаю, що з часом реалізація цих подій зміниться, тому якщо ми хочемо точно знати, є зв'язок чи ні, необхідно дописувати реалізацію самим.

З Мозілли і іе8 визначилися (все добре, але необхідно трохи підпиляти), але що ж робити з рештою браузерами, де ще немає цих подій? Будемо визначати їх самі при ініціілізаціі сторінки і після аякс запитів. А зробимо це допомогою jquery c trigger / bind у вигляді плагіна.


Основні ідеї плагіна


0) Зручний інтерфейс.
$(document.body).bind(“xonline”, function(event) { … });
$(document.body).bind(“xoffline”, function(event) { … });
Я використовую xonline, xoffline так як online і offline вже реалізовані в браузері, а ми, по суті, робимо надбудову над цими подіями.

1) Природно, плагін повинен підтримувати online, offline events для браузерів, в яких ці події є. При online для цих браузерів відбувається додаткова перевірка на зв'язок з інтернетом. При offline нічого не перевіряємо.

2) Для браузерів, подтримують ці дії, перевірка на зміну мережевого статусу відбувається після ajax запитів. Припустимо, було з'єднання, а запит виявився невдалим. У цьому випадку робимо додаткову перевірку на зв'язок як в 1 пункті і, якщо треба, запускаємо trigger ("xoffline").


Як використовувати?


Все просто, створюємо обробників двох подій xonline, xoffline. Все інше плагін виконає сам. Подивитися, як працює плагін, можна відкривши приклад, а потім відключившись від мережі. У восьмому ie і firefox 3.5 спрацює xoffline і прямокутник перефарбується. У google chrome, opera, safari і ранніх версіях ie і mozilla, крім відключення від мережі, для запуску події offline ще потрібно виконати невдалий запит. Якщо життєво необхідно стежити за з'єднанням постійно, то плагін підтримує метод $. CheckWebstatus (time) (time – кількість секунд). Цей метод в браузерах, подтримують нативної online / offline події, перевіряє кожні time секунд з'єднання. Приклад з checkWebStatus

Успішно протестовано в Mozilla 3.5.3, IE8, IE6, Chrome, Opera 10

Update 10.10.2009
Підправив плагін:
1) Виправлений баг з перевіркою стану мережі при офлайні.
2) Події перейменовані з xonline, xoffline у зрозуміліші trueonline, trueoffline.
3) Прибрано методи та змінні з window.
4) Додана можливість налаштування плагіна.
6) Тепер він називається TrueOnline plugin:)

Всім дякую за мудрі поради і тестування


Завантажити плагін

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*