В настоящее время я работаю над веб-приложением, у меня есть механизм журналирования JS, который обрабатывает ошибку Javascript, которая не попадает в код js внутри страницы. Я использую window.onerror, чтобы поймать все такие ошибки и зарегистрировать их еще где.
Однако проблема заключается в том, что Opera не имеет события window.onerror. один из подходов, о котором я мог думать, состоит в том, чтобы преобразовать весь код js-функций и вставить блоки try-catch внутри этих функций после загрузки тела. Однако во многих случаях это не работает, но, по крайней мере, оно работает в некоторой степени.
Я уверен, что этот подход отстой, Но я не мог придумать ничего лучшего. Просьба сообщить.
Обновление: на данный момент я вызываю код ниже, чтобы найти столько ошибок, сколько мог.
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);}';
}
}
}