Ich möchte jeden undefinierten Funktionsfehler abfangen, der ausgelöst wird. Gibt es in JavaScript eine Möglichkeit zur globalen Fehlerbehandlung? Der Anwendungsfall ist das Abfangen von Funktionsaufrufen aus Flash, die nicht definiert sind.
Antworten
Zu viele Anzeigen?Wenn Sie einen einheitlichen Weg suchen, um sowohl nicht abgefangene Fehler als auch unbehandelte Ablehnungen von Versprechen zu behandeln, können Sie einen Blick auf nicht gefangene Bibliothek .
EDIT
<script type="text/javascript" src=".../uncaught/lib/index.js"></script>
<script type="text/javascript">
uncaught.start();
uncaught.addListener(function (error) {
console.log('Uncaught error or rejection: ', error.message);
});
</script>
Es hört das Fenster ab. unbehandelte Ablehnung zusätzlich zu window.onerror.
Ich würde empfehlen, die Trackjs einen Versuch.
Das ist Fehlerprotokollierung als Dienst.
Es ist erstaunlich einfach einzurichten. Fügen Sie einfach eine <script>-Zeile zu jeder Seite hinzu und das war's. Das bedeutet auch, dass es erstaunlich einfach zu entfernen ist, wenn Sie es nicht mehr mögen.
Es gibt weitere Dienste wie Wache (das Open-Source ist, wenn Sie Ihren eigenen Server hosten können), aber es tut nicht, was Trackjs tut. Trackjs zeichnet die Interaktion des Benutzers zwischen seinem Browser und Ihrem Webserver auf, so dass Sie die Schritte des Benutzers, die zum Fehler geführt haben, tatsächlich nachverfolgen können, im Gegensatz zu einer bloßen Datei- und Zeilennummer-Referenz (und vielleicht einem Stack-Trace).
Sie hören auf das Ereignis onerror, indem Sie window.onerror eine Funktion zuweisen:
window.onerror = function (msg, url, lineNo, columnNo, error) {
var string = msg.toLowerCase();
var substring = "script error";
if (string.indexOf(substring) > -1){
alert('Script Error: See Browser Console for Detail');
} else {
alert(msg, url, lineNo, columnNo, error);
}
return false;
};
- See previous answers
- Weitere Antworten anzeigen