2013-09-30 14 views
14

Sto ricercando la possibilità di rilevamento automatico degli errori su pagina tramite Javascript. Ho trovato diverse domande in cui la risposta consente di rilevare errori di compilazione e runtime in tutto il mondo tramite window.onerror, ma nessuna risposta menziona altri tipi di errori non-Javascript che vengono spesso segnalati nelle console degli errori del browser. Sono principalmente interessato agli errori di rete (URI non validi, errori SSL, errori HTTP, timeout) e agli errori di interpretazione delle risorse (tipi non corrispondenti che causano l'interruzione dell'interpretazione della risorsa, l'analisi degli errori sulle risorse caricate, ecc.).C'è un approccio globale per catturare gli errori di rete in javascript

ho controllato il metodo performance.getEntries, ma sono sconcertato per scoprire che non sembra contenere richieste di rete che hanno determinato gli errori (ho controllato solo in Chrome 29 ...)

non ho bisogno compatibilità completa tra browser. Finché funziona su alcuni browser e non rompe gli altri, va bene.

+0

Penso che la maggior parte di loro siano solo avvertimenti che non possono essere rilevati da javascript, dal momento che danno risultati normali. Tuttavia, è possibile aggiungere i propri gestori a ciascuna richiesta e verificarli manualmente. – Bergi

risposta

2

Il gestore window.onerror funziona bene in Chrome 13+, Firefox 6.0+, Internet Explorer 5.5+, Opera 11.60+ e Safari 5.1+. C'è già un really good answer on StackOverflow che fornisce molte informazioni a riguardo.

Per quanto riguarda gli altri elementi (ad esempio immagini) sono interessati, jQuery fornisce un metodo .error() di allegare un gestore di eventi di errore per avvisare l'utente quando un'immagine o script esterno non riesce a caricare. Se non è possibile utilizzare jQuery, un'altra opzione è precaricare tutte le immagini/risorse esterne tramite XMLHttpRequest e ascoltare il status (il codice di risposta HTTP) della richiesta (qualsiasi cosa diversa da 200 OK o 304 Not Modified è qualcosa che si desidera restituire un errore). Il lato negativo di questo è che, poiché i gestori di eventi e tali devono essere allegati prima che la pagina sia completamente caricata, chiunque abbia JavaScript disabilitato sta guardando una pagina frammentata, possibilmente vuota.

URI e errori HTTP non validi vengono gestiti meglio dal lato server. Un file .htaccess ben formato, combinato con Apache mod_rewrite (o un equivalente) può fornire un sacco di attenuazione per richieste non valide al server.

+0

Sfortunatamente, l'approccio menzionato nel secondo paragrafo non è globale, si dovrebbe riscrivere l'intero sito. Gli URI non validi non possono essere gestiti lato server poiché l'URI non è valido e non verrà mai inviato al server. Gli errori HTTP possono essere monitorati se si possiede il server, ma cosa succede se si desidera verificare la presenza di errori durante il caricamento di risorse di terze parti ... –

+1

@FabioBeltramini: non è necessario riscrivere l'intero sito. Devi solo aggiungerlo ad uno script che intercetta tutte le chiamate a funzioni native ([esempio] (http://stackoverflow.com/questions/15768369/custom-xmlhttprequest-prototype-open)) e guarda tutte le risorse che vengono aggiunte al DOM. È possibile aggiungere in modo dinamico gestori di errori senza toccare il codice. – Bergi

+0

Non penso che tu abbia bisogno di jQuery qui. È possibile ascoltare gli eventi di errore su

Problemi correlati