2012-10-25 5 views
10

Widziałem tysiąc wpisów, w których ktoś pyta, jak wykryć łączność internetową w javascriptu i zawsze jest jedna osoba, która mówi, że używa navigator.onLine, a inna mówi, że jest niewiarygodna i mówi tylko, czy połączenie jest dostępne, nie, jeśli jesteś podłączony.Raz na zawsze, co robi navigator.onLine?

Dolna linia, będzie navigator.on Powiedz mi, czy użytkownik nie może skontaktować się z serwerem z powodu słabego zasięgu, nawet jeśli 3G/4G i Wi-Fi są włączone i nie są w trybie samolotowym, czy nic? Tylko twoja średnia martwa strefa.

+1

https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine – Mahn

+1

http://labs.ft.com/2012/08/ navigator-online-here-be-dragons/ – CodeReaper

Odpowiedz

9

Z MDN article about navigator.onLine:

Przeglądarki zaimplementować tę właściwość inaczej.

W Chrome i Safari, jeśli przeglądarka nie jest w stanie połączyć się z siecią lokalną (LAN) lub router jest niedostępny; wszystkie pozostałe warunki są prawdziwe. Tak więc, choć można założyć, że przeglądarka jest w trybie offline, gdy zwraca fałszywą wartość, nie można założyć, że prawdziwa wartość oznacza koniecznie, że przeglądarka może uzyskać dostęp do Internetu. Możesz otrzymywać fałszywe alarmy, na przykład w przypadkach, gdy na komputerze działa oprogramowanie do wirtualizacji, które ma wirtualne karty Ethernet, które są zawsze "połączone". Dlatego jeśli naprawdę chcesz określić status przeglądarki w trybie online, powinieneś opracować dodatkowe środki do sprawdzenia. Aby dowiedzieć się więcej, zobacz artykuł HTML5 Rocks, Working Off the Grid.

W przeglądarkach Firefox i Internet Explorer przełączanie trybu przeglądarki do trybu offline wysyła fałszywą wartość. Wszystkie pozostałe warunki powrotu prawdziwa wartość

+0

Dobrze shucks. Byłoby to niesamowite narzędzie, gdyby działało niezawodnie. Dzięki za zwięzły fragment. – jmease