393 Stimmen

Globaler JavaScript-Ereignis-Mechanismus

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.

6voto

GibboK Punkte 67729
// display error messages for a page, but never more than 3 errors
window.onerror = function(msg, url, line) {
if (onerror.num++ < onerror.max) {
alert("ERROR: " + msg + "\n" + url + ":" + line);
return true;
}
}
onerror.max = 3;
onerror.num = 0;

6voto

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.

5voto

Apoorv Saxena Punkte 3846

Man sollte auch den zuvor zugeordneten onerror-Callback beibehalten

<script type="text/javascript">

(function() {
    var errorCallback = window.onerror;
    window.onerror = function () {
        // handle error condition
        errorCallback && errorCallback.apply(this, arguments);
    };
})();

</script>

2voto

kane Punkte 4834

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).

1voto

Ali Azhar Punkte 1655

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X