2013-09-30 7 views
14

Ich recherchiere die Möglichkeit der automatisierten On-Page-Fehlererkennung über Javascript. Ich habe mehrere Fragen gefunden, bei denen die Antwort es erlaubt, Javascript-Kompilierungs- und Laufzeitfehler global über window.onerror zu erfassen, aber keine Antworten erwähnen andere Arten von Nicht-Javascript-Fehlern, die oft in Browserfehlerkonsolen gemeldet werden. Ich bin hauptsächlich an Netzwerkfehlern (ungültigen URIs, SSL-Fehlern, HTTP-Fehlern, Timeouts) und Ressourceninterpretationsfehlern interessiert (nicht übereinstimmende Typen, die zum Abbruch der Interpretation der Ressource führen, Analyse von Fehlern auf geladenen Ressourcen usw.).Gibt es einen globalen Ansatz, um Netzwerkfehler in Javascript zu fangen

Ich habe die performance.getEntries Methode, aber ich bin verblüfft, dass es scheint nicht zu finden Netzwerkanforderungen zu enthalten, die zu Fehlern geführt (I in Chrome nur überprüft 29 ...)

Ich brauche nicht vollständige Cross-Browser-Kompatibilität .. solange es in einigen Browsern funktioniert, und die anderen nicht bricht, das ist in Ordnung.

+0

Ich denke, die meisten von ihnen sind nur Warnungen, die nicht von Javascript erkannt werden, da die normalen Ergebnisse geben. Sie können jedoch jeder Anfrage eigene Handler hinzufügen und diese Dinge manuell überprüfen. – Bergi

Antwort

2

Der Handler window.onerror funktioniert gut in Chrome 13 +, Firefox 6.0 +, Internet Explorer 5.5 +, Opera 11.60 + und Safari 5.1 +. Es gibt bereits eine really good answer on StackOverflow, die eine Menge Informationen darüber bietet.

Soweit andere Elemente (wie Bilder) betroffen sind, bietet jQuery eine .error() Methode einen Fehler Ereignishandler befestigen den Benutzer zu warnen, wenn ein Bild oder externes Skript geladen werden kann. Wenn Sie jQuery nicht verwenden können, ist eine weitere Option, alle Bilder/externen Ressourcen über XMLHttpRequest vorab zu laden und den status (den HTTP-Antwortcode) der Anfrage abzurufen (alles andere als 200 OK oder 304 Not Modified ist etwas, das Sie zurückgeben wollen) ein Fehler). Der Nachteil hierbei ist, dass Event-Handler und solche, die angehängt werden müssen, bevor die Seite vollständig geladen ist, jemand, der JavaScript deaktiviert hat, auf eine fragmentierte, möglicherweise leere Seite schauen wird.

Ungültige URIs und HTTP-Fehler werden am besten serverseitig behandelt. Eine wohlgeformte .htaccess Datei, kombiniert mit Apache mod_rewrite (oder einem Äquivalent) kann eine Menge Dämpfung für schlechte Anfragen an den Server bieten.

+0

Leider ist der im zweiten Absatz erwähnte Ansatz nicht global, Sie müssten die gesamte Site neu schreiben. Ungültige URIs können nicht serverseitig behandelt werden, da der URI ungültig ist und niemals an den Server gesendet wird. HTTP-Fehler können überwacht werden, wenn Sie den Server besitzen, aber was ist, wenn Sie nach Fehlern suchen möchten, die Drittanbieter-Ressourcen laden ... –

+1

@FabioBeltramini: Sie müssen nicht die gesamte Website neu schreiben. Sie müssen es nur mit einem Skript voranstellen, das alle Aufrufe von nativen Funktionen abfängt ([Beispiel] (http://stackoverflow.com/questions/15768369/custom-xmlhttprequest-prototype-open)) und alle Ressourcen überwacht, die hinzugefügt werden zum DOM. Sie können Fehlerhandler dynamisch hinzufügen, ohne Ihren Code zu berühren. – Bergi

+0

Ich glaube nicht, dass Sie hier überhaupt jQuery brauchen. Sie können Fehlerereignisse auf

Verwandte Themen