2012-12-30 10 views
5

Powiel możliwe:
JavaScript: How to detect that the Internet connection is offline?chcę dodać funkcjonalność Facebook wyświetlając komunikat, kiedy mój użytkownik traci połączenie z Internetem

na Facebooku, gdy straci połączenie z Internetem, zobacz komunikat "Brak połączenia z Internetem. Spróbuj ponownie?" i zmienisz się z online na offline. Chcę tego na mojej stronie internetowej. Jak mogę to zrobić?

+2

Wyślij ping do serwera. Jeśli nie ma odpowiedzi, są w trybie offline i ostrzegają za pomocą Javascript. –

+2

Od HTML5 można użyć ['window.navigator.onLine'] (https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine), ale nie w pełni kompatybilny. – jeremy

Odpowiedz

4

To powinno zadziałać, ale prawdopodobnie poradziłbym sobie z tym inaczej. Po prostu wysyła zapytanie do strony na serwerze co 15 sekund. Jeśli zapytanie nie powiedzie się, prawdopodobnie jest w trybie offline (ty lub serwer).

function checkOnline(){ 
    $.ajax({ 
     url: "test.php", 
    }).done(function(html) { 
     if(html=='ok') 
      setTimeout('checkOnline()',15000); 
     else 
      alert('Error'); 
    }).fail(function(){ 
     alert('Offline'); 
    }); 
} 

test.php

<?php exit('ok'); ?> 

bym osobiście załączyć funkcję fail do moich innych zapytań Ajax lub wyborczych. Jeśli te nie powiodą się, wyzwolę komunikat offline i zaprzestanę dalszego odpytywania lub zapytań do momentu ponownego załadowania strony lub po upływie określonego czasu. Nie ma sensu po prostu odpytywać serwer za to.

+0

Dzięki. co powiesz na zmianę użytkownika z trybu online na offline w mojej bazie danych MySql. Czy to możliwe. Jak to robi Facebook? – user1763032

3

Przeprowadź okresową kwerendę ajaxową na swój serwer. Jeśli żądanie się nie powiedzie, silnik ajax wywoła wywołanie zwrotne "fail".

Ale w rzeczywistości prawdopodobnie dołączalibyśmy "odstąpienie" od wywołania zwrotnego javascript do wszystkich żądań po stronie serwera, a wywołałoby to nieudane żądanie.

Powiązane problemy