2012-04-20 16 views
5

La mia applicazione web funziona su più dispositivi portatili come iPad schede Galaxy ecc immagini richiesta di applicazione dal server e rendere in sui client.Come rilevare la perdita di rete in Javascript?

Ora il problema è a volte accade, che la connettività di rete viene persa durante il rendering di immagini, oltre che il tempo che HTML non-immagine icona viene visualizzata sui dispositivi ...

voglio gestire questa situazione con garbo, al momento della perdita di rete, voglio catturare quella e mostrare un avviso all'utente che nessuna connettività di rete o qualcosa ...

Ho provato a utente navigator.onLine evento .. ma non funziona su tutti i set di browser sono sostenere come, 5-6 versione su Mozilla ecc

E anche il mio applicazione funziona solo su rete locale wi-fi ... può o non può essere collegato ad internet .. sarà in quel suitation Anche questa navigator.onLine opere ..?

Si prega di fornire me qualsiasi altro modo migliore per fare questo ...

+0

In tutta la mia esperienza di programmatori, sono giunto alla conclusione che non è mai possibile determinare se si è online, indipendentemente dalla piattaforma o dal linguaggio di programmazione – ControlAltDel

risposta

2

si potrebbe fare un po 'di richiesta XHR al server e controllare lo stato restituito.

Se è 0, questo significa the connection is missing.

Quindi, qualcosa di simile potrebbe dare un po 'di funzione di utilità:

function isOnline (callback) { 
    var xhr = new XMLHttpRequest() 
    xhr.onreadystatechange = function () { 
     // Make sure the request is finished 
     if (xhr.readyState === 4) { 
      // There is the magic 
      if (xhr.status === 0) { 
       callback(false) 
      } 
      else { 
       callback(true) 
      } 
     } 
    } 
    xhr.open('/some/url') 
    xhr.send() 
} 

// Usage example: 
isOnline(function (status) { 
    if (status) { 
     // You're online 
    } 
    else { 
     // You're not online 
    } 
}) 

PS: Ho saltato la parte IE rispetto per l'oggetto xhr, ma sarebbe facile aggiungere. Questo è più per avere l'idea.

2

Ad esempio, è possibile utilizzare

<img src="..." onerror="noConnection()"> 

Così metodo noConnection saranno chiamati se un'immagine non è stato caricato.

Maggiori informazioni qui: jQuery/JavaScript to replace broken images

+0

È possibile aggiungere un collegamento alla documentazione? – Tadeck

+0

aggiunto un collegamento ai documenti. –

+1

Ok, forse qualcosa di più affidabile di W3Schools? Sarebbe fantastico, dato che W3Schools è una fonte di informazioni completamente inaffidabile. Vedi qui: http://w3fools.com/ – Tadeck

Problemi correlati