но window.onerror не работает в Opera Mini (например, пользовательский агент "Opera / 9.80 (J2ME / MIDP; Opera Mini / 7.1.32422 / 30.3214; U; ru) Presto / 2.8.119 Версия / 11.10"). Это действительно затрудняет отладку javascript на мобильных устройствах с помощью Opera Mini.

тоящее время я работаю над веб-приложением, у меня есть механизм ведения журналов 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);}';
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос