Ich führe eine ASP.NET-Site aus, auf der ich Probleme habe, einige JavaScript-Fehler nur mit manuellen Tests zu finden.
Gibt es eine Möglichkeit, alle JavaScript-Fehler auf der Clientseite abzufangen und auf dem Server zu protokollieren, dh im EventLog (über Webservice oder ähnliches)?
javascript
logging
error-handling
MADMap
quelle
quelle
Antworten:
Sie können versuchen, einen eigenen Handler für das Ereignis onerror einzurichten und XMLHttpRequest zu verwenden, um dem Server mitzuteilen, was schief gelaufen ist. Da dies jedoch nicht Teil einer Spezifikation ist, ist die Unterstützung etwas unzuverlässig .
Hier ist ein Beispiel aus der Verwendung von XMLHttpRequest zum Protokollieren von JavaScript-Fehlern :
quelle
setInterval
Methode erhalten. Im Web sind viele JS-Fehlerberichtsdienste verfügbar. Checkout ErrLytics . Außerdem erhalten Sie eine Analyse aller Benutzeraktionen auf Ihrer Website.Kurze Antwort: Ja, das ist möglich.
Längere Antwort: Die Leute haben bereits darüber geschrieben, wie Sie dieses Problem (zumindest teilweise) lösen können, indem Sie Ihren eigenen Code schreiben. Beachten Sie jedoch, dass es Dienste gibt, die anscheinend dafür gesorgt haben, dass der benötigte JS-Code in vielen Browsern funktioniert. Ich habe folgendes gefunden:
Ich kann für keinen dieser Dienste sprechen, da ich sie noch nicht ausprobiert habe.
quelle
Ich habe gerade die serverseitige Fehlerprotokollierung für Javascript-Fehler in einem Projekt bei der Arbeit implementiert. Mit jQuery gibt es eine Mischung aus Legacy-Code und neuem Code .
Ich verwende eine Kombination aus
window.onerror
und umschließe die jQuery-Ereignishandler und eine Onready-Funktion mit einer Fehlerbehandlungsfunktion (siehe: JavaScript-Fehlerverfolgung: Warum window.onerror nicht ausreicht ).window.onerror
: fängt alle Fehler im IE ab (und die meisten Fehler in Firefox), tut aber nichts in Safari und Opera.Sobald ich den Fehler entdeckt habe, füge ich ihm einige zusätzliche Eigenschaften hinzu (URL, Browser usw.) und sende ihn dann mit einem Ajax-Aufruf an den Server zurück.
Auf dem Server habe ich eine kleine Seite, die nur die veröffentlichten Argumente aufnimmt und sie an unser normales Server-Protokollierungsframework ausgibt.
Ich möchte den Code dafür als Quelle öffnen (als jQuery-Plugin). Wenn jemand interessiert ist, lass es mich wissen, es würde helfen, die Chefs zu überzeugen!
quelle
Wenn Sie Google Analytics verwenden, können Sie Javascript-Fehler in Google Analytics-Ereignissen protokollieren.
Siehe diese App: http://siteapps.com/app/log_javascript_errors_with_ga-181
Ich hoffe es hilft.
quelle
Außerdem empfehle ich die Verwendung des Dienstprogramms TraceTool , das JavaScript unterstützt und für die JS-Überwachung sehr praktisch ist.
quelle
Wenn Sie die clientseitigen Fehler wieder auf dem Server protokollieren möchten, müssen Sie eine Art Serververarbeitung durchführen. Am besten ist es, einen Webdienst zu haben, auf den Sie über JavaScript (AJAX) zugreifen können und an den Sie Ihre Fehlerprotokollinformationen weitergeben.
Löst das Problem nicht zu 100%, da das Problem darin besteht, dass der Webserver den Webservice hostet, auf dem Sie Probleme haben. Sie können die Informationen auch über eine Standardseite über eine Abfragezeichenfolge senden. Eine Methode von Dies erfolgt über das dynamische Generieren von Bild-Tags (die dann entfernt werden), da der Browser versucht, die Quelle eines Bildes zu laden. Es geht jedoch gut um domänenübergreifende JavaScript-Aufrufe. Denken Sie daran, dass Sie in Schwierigkeiten sind, wenn jemand Bilder ausgeschaltet hat;)
quelle
Ich habe kürzlich Appfail verwendet , das sowohl asp.net- als auch JavaScript-Fehler erfasst
quelle
Sie könnten möglicherweise von einem Versuch / Fang aus einen Ajax-Aufruf an den Server senden, aber das ist wahrscheinlich das Beste, was Sie tun können.
Darf ich stattdessen JavaScript-Unit-Tests vorschlagen? Möglicherweise mit JSUnit ?
quelle