Ich arbeite derzeit an einer Webanwendung, ich habe einen JS-Logging-Mechanismus, der Javascript-Fehler behandelt, die nicht durch den Js-Code innerhalb der Seite gefangen werden. Ich verwende window.onerror, um alle diese Fehler zu erfassen und sie wo sonst zu protokollieren.Mimisches Fenster. onerror in Opera mit Javascript
Problem ist jedoch mit Opera, die window.onerror Ereignis nicht hat. Eine Herangehensweise, an die ich denken könnte, ist, alle js-Funktionscodes mit einem String zu verarbeiten und try catch-Blöcke innerhalb dieser Funktionen nach dem Laden des Körpers einzufügen. Es funktioniert zwar in vielen Fällen nicht, aber es funktioniert zumindest teilweise.
Ich bin sicher, dass diese Herangehensweise saugt, aber ich konnte mir nichts besseres vorstellen. Bitte beraten.
Update: Im Moment rufe ich den Code unten, um so viele Fehler wie möglich zu fangen.
function OnBodyLoad()
{
var allElements = document.getElementsByTagName("*");
for(var cnt = 0;cnt < allElements.length;cnt++)
{
RegisterAllEvents(allElements[cnt]);
}
}
function RegisterAllEvents(objToProcess){
for(var cnt = 0;cnt < objToProcess.attributes.length;cnt++){
if(IsAttributeAnEvent(objToProcess.attributes[cnt].name))
{
objToProcess.attributes[cnt].value = 'try{'+objToProcess.attributes[cnt].value+'}catch(err){LogError("'+ objToProcess.id+'"'+ ',err);}';
}
}
}
Danke für den Code! Wir könnten das im Entwicklungsmodus bei uns verwenden (wenn es nicht zu langsam ist). –