2016-04-14 10 views
4

Wie Elementziel in der Ereignisfehler in Javascript erhalten?window.onerror get Element Ziel

Quelle:

<button onclick="a(this);">GO!</button> 
<script> 
window.onerror = function(message, source, lineno, colno, error) { 
    console.log(error.stack); // event.target = window 
} 
</script> 

aus:

ReferenceError: a is not defined

at HTMLButtonElement.onclick (onerror.html:1)

, was das ist "HTMLButtonElement.onclick"?

var domID = "HTMLButtonElement".id; 
addLog(document.querySelector(domID)); //example usage 
+0

Es gibt keine Art und Weise ist das Element aus dem onerror zu bekommen. – epascarello

Antwort

0

Zum einen würde ich dringend empfehlen Sie nicht, Inline-Onclick-Ereignishandler verwenden, aufgrund der Ausgabe Sie haben - sie sind unglaublich schwer zu debuggen und fördern, nicht Trennung von Bedenken (HTML ist für Markup, js Dateien sind für Logik).

Zweitens ist das Überschreiben des onerror-Handlers auch riskant, da Sie nicht wissen, was der Code von Drittanbietern (falls vorhanden) vom onerror-Handler erwartet. Dies ist das gleiche wie die Regeln von "Überschreiben Sie die Basisobjekte nicht." Die Methode, das Element in diesem Fall zu erhalten, wäre jedoch, den Event-Handler anders zu schreiben, um den Fehler zu erfassen -Throw mit dem Element Informationen verfügbar.

button.addEventListener('click', function() { 
    try { 
     a(this); 
    } catch (e) { 
     e.message = e.message + " - element clicked: " + this.id; 
     throw e; 
    } 
}); 

hier ein JSFiddle ist ein Beispiel zeigt.