Domanda

Sto gestendo un sito ASP.NET in cui ho problemi a trovare alcuni errori JavaScript solo con test manuali.

Esiste la possibilità di rilevare tutti gli errori JavaScript sul lato client e registrarli sul server, ad esempio nel EventLog (tramite Webservice o qualcosa del genere)?

È stato utile?

Soluzione

Puoi provare a impostare il tuo gestore per evento onerror e utilizzare XMLHttpRichiedi di dire al server cosa è andato storto, tuttavia poiché non fa parte di alcuna specifica, il supporto traballante.

Ecco un esempio da Uso di XMLHttpRequest per registrare errori JavaScript :

window.onerror = function(msg, url, line)
{
  var req = new XMLHttpRequest();
  var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
  req.open("POST", "/scripts/logerror.php");
  req.send(params);
};

Altri suggerimenti

Risposta breve: Sì, è possibile.

Risposta più lunga: le persone hanno già scritto su come è possibile (almeno in parte) risolvere questo problema scrivendo il proprio codice. Tuttavia, tieni presente che ci sono servizi là fuori che sembrano aver fatto in modo che il codice JS necessario funzionasse in molti browser. Ho trovato il seguente:

Non posso parlare di nessuno di questi servizi perché non li ho ancora provati.

Ho appena implementato la registrazione degli errori lato server sugli errori javascript su un progetto al lavoro. Esiste una combinazione di codice legacy e nuovo codice che utilizza jQuery .

Uso una combinazione di window.onerror e il wrapping dei gestori di eventi jQuery e già la funzione con una funzione di gestione degli errori (vedere: Tracciamento errori JavaScript: perché window.onerror non è abbastanza ).

  • window.onerror : rileva tutti gli errori in IE (e la maggior parte degli errori in Firefox), ma non fa nulla in Safari e Opera.
  • Gestori di eventi jQuery: rileva gli errori degli eventi jQuery in tutti i browser.
  • Funzione jQuery ready: rileva gli errori di inizializzazione in tutti i browser.

Una volta rilevato l'errore, aggiungo alcune proprietà extra (url, browser, ecc.) e poi lo rimando sul server usando una chiamata Ajax.

Sul server ho una piccola pagina che prende semplicemente gli argomenti pubblicati e li invia al nostro normale framework di registrazione del server.

Vorrei aprire il codice per questo (come plugin jQuery). Se qualcuno è interessato fammi sapere, aiuterebbe a convincere i capi!

Se si utilizza Google Analytics, è possibile registrare errori javascript negli eventi di Google Analytics.

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

Spero che sia d'aiuto.

Inoltre, raccomando di utilizzare TraceTool , viene fornito con supporto JavaScript ed è molto utile per il monitoraggio di JS.

Se si desidera registrare nuovamente gli errori sul lato client sul server, è necessario eseguire una sorta di elaborazione del server. La migliore scommessa sarebbe quella di avere un servizio web a cui puoi accedere via JavaScript (AJAX) e gli passi le informazioni del tuo registro degli errori.

Non risolve il problema al 100% se il problema riguarda il server Web che ospita il servizio Web in cui si è in difficoltà, l'altra opzione sarebbe quella di inviare le informazioni tramite una pagina standard tramite una stringa di query, Un metodo per farlo è tramite la generazione dinamica di tag Image (che vengono quindi rimossi) poiché il browser proverà a caricare l'origine di un'immagine. Tuttavia aggira bene le chiamate JavaScript tra domini. Tieni presente che sei nei guai se qualcuno ha le immagini disattivate;)

Di recente ho utilizzato Appfail , che rileva sia errori asp.net che JavaScript

Potresti potenzialmente effettuare una chiamata Ajax al server da un tentativo / cattura, ma probabilmente è il massimo che puoi fare.

Posso invece suggerire un test unitario JavaScript? Forse con JSUnit ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top