Frage

Im eine ASP.NET-Site ausgeführt wird, wo ich Probleme habe einige JavaScript-Fehler nur mit manuellen Tests zu finden.

Gibt es eine Möglichkeit, alle JavaScript-Fehler auf dem Clientside zu fangen und melden Sie sie auf dem Server das heißt in der EventLog (via Webservice oder so ähnlich)?

War es hilfreich?

Lösung

Sie könnten versuchen, Ihren eigenen Handler für die onerror Ereignis und Nutzung der Einrichtung XMLHttpRequest den Server zu sagen, was schief gelaufen ist, aber da es nicht Teil einer Spezifikation ist, Unterstützung ist etwas flockig .

Hier ist ein Beispiel von XMLHttpRequest Verwendung von JavaScript Fehler zu protokollieren :

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);
};

Andere Tipps

Kurze Antwort:. Ja, es ist möglich

Lange Antwort: Die Menschen haben bereits darüber geschrieben, wie man (zumindest teilweise) dieses Problem lösen, indem Sie Ihren eigenen Code zu schreiben. Allerdings müssen beachten, dass es Dienste gibt, die die JS-Code benötigt Werke in vielen Browsern zu haben sichergestellt scheint. Ich habe folgendes gefunden:

Ich kann nicht für einen dieser Services sprechen, wie ich sie noch nicht ausprobiert haben.

Ich habe gerade serverseitige Fehlerprotokollierung implementiert, die auf Javascript-Fehler an einem Projekt bei der Arbeit. Es ist eine Mischung aus Legacy-Code und neuen Code mit jQuery .

ich eine Kombination von window.onerror verwenden und Umwickeln der jQuery Event-Handler und onready Funktion mit einer Fehlerbehandlungsfunktion (siehe: Tracking JavaScript. Fehler: Warum window.onerror ist nicht genug )

  • window.onerror: Fänge alle errrors in IE (und die meisten Fehler in Firefox), tut aber nichts in Safari und Opera
  • .
  • jQuery Event-Handler. Fängt jQuery Ereignisfehler in allen Browsern
  • jQuery-Ready-Funktion: fängt Initialisierung Fehler in allen Browsern
  • .

Wenn ich den Fehler gefangen habe, füge ich einige zusätzliche Eigenschaften, um es (url, Browser, etc.) und es dann an den Server Post zurück einen Ajax-Aufruf verwendet wird.

Auf dem Server habe ich eine kleine Seite, die die gebuchten Argumente nur nimmt und gibt sie an unseren normalen Server Logging-Framework.

Ich möchte Quelle hierfür den Code öffnen (als jQuery-Plugin). Wenn jemand mich interessiert wissen lassen, würde es helfen, die Bosse zu überzeugen!

Wenn Sie Google Analytics verwenden, können Sie JavaScript-Fehler in Google Analytics-Ereignisse protokollieren.

Sehen Sie diese App: http://siteapps.com/app/log_javascript_errors_with_ga-181

Hoffe, es hilft.

Auch recomend ich mit TraceTool Dienstprogramm, kommt es mit JavaScript-Unterstützung und ist sehr praktisch für JS-Überwachung.

Wenn Sie wollen, um die clientseitige Fehler zurück an den Server zu haben, Sie gehen zu melden Sie sich eine Art von Server-Verarbeitung zu tun. Am besten wäre es, einen Web-Service zu haben, die Sie via JavaScript (AJAX) zugreifen können und Sie geben Ihre Fehlerprotokoll Informationen zu.

100% nicht löst das Problem Cuz, wenn das Problem mit der Web-Server-Hosting des Web-Service, den Sie in Schwierigkeiten sind, bist du andere Möglichkeit wäre, die Informationen über eine Standard-Seite über einen Query-String zu senden, ein Verfahren, das zu tun ist über dynamisch zu erzeugen image-Tags (die dann entfernt werden), wie der Browser versuchen, die Quelle eines Bildes zu laden. Es wird um Cross-Domain JavaScript schön obwohl nennt. Beachten Sie, dass Sie in Schwierigkeiten sind, wenn jemand Bilder ausgeschaltet;)

Ich habe mit Appfail vor kurzem, die beide asp.net und JavaScript-Fehler

erfasst

Sie könnten möglicherweise einen Ajax-Aufruf an den Server von einem try / catch machen, aber das ist wahrscheinlich über das Beste, was Sie tun können.

Auch schlage ich JavaScript Unit-Tests statt? Möglicherweise mit JSUnit ?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top