По умолчанию ошибки js кода внутри CEF браузера выводятся только в текстовый файлик
Есть более простой способ, о котором не все знают. Возможно кому-то понадобится.
Идея простая - мы отлавливаем любые ошибки которые генерирует браузер и передаем их на клиент. Дальше уже можно распоряжаться этим как душа пожелает. Для примера я буду выводить ошибки в клиентскую дебаг консоль (F11).
Чтобы отлавливать ошибку в браузере мы должны добавить в браузерном коде обработчик события onerror
Желательно объявлять его в самом начале html странички или самого верхнего js скрипта. Иначе ошибки, которые могут возникнуть до этого места могут проскочить мимо.
Примечание: событие onerror вызывается для всех не перехваченных ошибок. Т. е. если где-то в браузерном коде есть обработчики ошибок в try catch, то такие ошибки сюда прилетать не будут.
И соответственно на клиенте добавляем event
![1631461476735.png 1631461476735.png](https://rage-script.com/data/attachments/0/352-cf244b85d0f7adfea2df49bc1210e6d7.jpg?hash=zyRLhdD3rf)
Преимущество данного метода еще и в том, что мы можем передавать текст ошибок на сервер. Это позволит увидеть не только ошибки у локального игрока, а у всех игроков на сервере.
Помимо этих трех значений msg, url, line можно еще получить доступ к объекту Error и более детальной информации об ошибке включая стек вызовов.
Полезные ссылки:
developer.mozilla.org
habr.com
ragemp/clientdata/cef_game_logs.txt
. Также можно получить доступ к ним через CEF Dev Tools. Но это далеко не всегда удобно.Есть более простой способ, о котором не все знают. Возможно кому-то понадобится.
Идея простая - мы отлавливаем любые ошибки которые генерирует браузер и передаем их на клиент. Дальше уже можно распоряжаться этим как душа пожелает. Для примера я буду выводить ошибки в клиентскую дебаг консоль (F11).
Чтобы отлавливать ошибку в браузере мы должны добавить в браузерном коде обработчик события onerror
HTML:
<script>
window.onerror = function(msg, url, line) {
mp.trigger("cef:error", msg, url, line)
};
</script>
Примечание: событие onerror вызывается для всех не перехваченных ошибок. Т. е. если где-то в браузерном коде есть обработчики ошибок в try catch, то такие ошибки сюда прилетать не будут.
И соответственно на клиенте добавляем event
JavaScript:
mp.events.add("cef:error", (errorMessage, url, line) => {
mp.console.logError(`${errorMessage} at ${url} line ${line.toString()}`);
});
![1631461476735.png 1631461476735.png](https://rage-script.com/data/attachments/0/352-cf244b85d0f7adfea2df49bc1210e6d7.jpg?hash=zyRLhdD3rf)
Преимущество данного метода еще и в том, что мы можем передавать текст ошибок на сервер. Это позволит увидеть не только ошибки у локального игрока, а у всех игроков на сервере.
Помимо этих трех значений msg, url, line можно еще получить доступ к объекту Error и более детальной информации об ошибке включая стек вызовов.
Полезные ссылки:
![developer.mozilla.org](https://developer.mozilla.org/mdn-social-share.cd6c4a5a.png)
GlobalEventHandlers.onerror - Интерфейсы веб API | MDN
Обработчик события для ошибок среды Javascript.
![developer.mozilla.org](https://developer.mozilla.org/favicon-48x48.cbbd161b.png)
Мониторинг JavaScript-ошибок с помощью window.onerror
Материал, перевод которого мы сегодня публикуем, посвящён обработке JS-ошибок с помощью window.onerror . Это — особое событие браузера, которое вызывается при появлении неперехваченных ошибок. Здесь...
![habr.com](https://assets.habr.com/habr-web/img/favicons/favicon-16.png)