2009-02-13 6 views
14

C'è un modo per ottenere un feedback automatico se si verifica un errore (anche errori di sintassi) quando si esegue un JavaScript sul lato client?Feedback automatico su errore JavaScript

Stavo pensando a qualcosa di simile:

<script src="debugger.js"></script> 
<script> 
    // some script with an error in it 
</script> 

E ogni volta che il debugger nota un errore invia un feedback al server.

risposta

16

EDIT: ho frainteso la tua domanda iniziale, questo dovrebbe funzionare:

Si noti inoltre, questo deve andare prima qualsiasi JavaScript che potrebbe causare errori.

window.onerror = function(msg,u,l) 
{ 
    txt ="Error: " + msg + "\n"; 
    txt+="URL: " + u + "\n"; 
    txt+="Line: " + l + "\n\n"; 
    //Insert AJAX call that passes data (txt) to server-side script 
    return true; 
}; 

Per quanto riguarda gli errori di sintassi, sei sfortunato. Javascript semplicemente muore quando c'è un errore di sintassi. Non c'è modo di gestirlo affatto.

+0

Ci ho pensato anche io. Ma sembra che solo Firefox lo faccia. Safari e Opera rimangono zitti quando cerco di avvisare il messaggio. – Gumbo

+0

Ok, forse è solo un avviso che non funziona. Stampa del messaggio di errore. Penso sia così. Grazie. – Gumbo

+0

Funziona in FF. Per farlo funzionare in IE devi disabilitare il debug degli script nella scheda avanzata delle opzioni internet. Non ho potuto farlo funzionare su Chrome né su Opera. – some

4

Non sono sicuro degli errori di sintassi ma è possibile rilevare gli errori js utilizzando l'evento window.onerror. Ricerca di "errori di registrazione in JavaScript" in Google ti dà un sacco di risultati ...

registrazione errori JavaScript per ASP.NET: http://james.newtonking.com/archive/2006/05/02/Logging-JavaScript-Errors-To-ASP.NET.aspx (Purtroppo il link per scaricare nel post è rotto).

registrazione errori lato client JavaScript per il server: http://www.codeproject.com/KB/ajax/logclientsidejserrors2srv.aspx

JavaScript notifiche di errore: http://www.thecodepage.com/post/JavaScript-Error-Notifications.aspx

0

window.onerror = MyFunction (msg, url, linea);

apriamo una finestra con i dettagli dell'errore, il tipo di browser (ad es. Navigator.userAgent), ecc. Tutti in campi contrassegnati READONLY e invitando l'utente a inviarli.

Abbiamo una casella di controllo "Non mostrare più questo" che è memorizzata in un cookie di sessione, quindi se continuano a ricevere errori che possono disabilitare il Popup.

Nonostante il fatto che abbiamo pensato che fosse "bello", riceviamo pochissimi rapporti e non sono convinto che sia perché ci stiamo avvicinando a zero errori di runtime!

9

Una tecnica è quella di utilizzare Ajax per Javascript error logging

Ogni javascript errore può essere intrappolato in caso window.onerror. Possiamo restituire true o false in modo che possiamo scegliere se l'utente deve vedere la normale finestra di dialogo di errore javascript. Questo script, nel caso molto improbabile di un errore javascript, raccoglie informazioni sull'errore e invia un httprequest a una pagina che registrerà l'errore javascript nel database.

+0

Stavo cercando quella pagina .. +1 –

+0

Grazie per il collegamento a questa utile funzione. Lo proverò. – Gumbo

0

Probabilmente è meglio inviare solo un rapporto di errore per pagina. Se ricevi un errore su un timer ripetuto o lo stesso AJAX chiama in modo ricorsivo un errore, puoi finire col riempire il tuo registro di inutili cianfrusaglie.

Inoltre, essere pronti a ricevere gli errori irrisolvibili causati da cose come:

  • deleghe di sicurezza manipolati con il codice
  • script da siti bloccati
  • errori browser Chrome poco importanti da estensioni
  • IE cellulari , il peggior browser al mondo
+1

ROFL @ IE Mobile –

0

Il modo più semplice per me era installare questo a pp da SiteApps Mercato:

http://siteapps.com/app/log_javascript_errors_with_ga-181

Una volta installato il tag piattaforma, è possibile installare un sacco di applicazioni e quello sopra è molto utile per me. Lo uso in 14 siti Web che ho sviluppato e sono in grado di tenere traccia degli errori javascript in Google Analytics.

Spero che questo possa essere d'aiuto.

Leandro