#javascript #console #onerror
#javascript #консоль #onerror
Вопрос:
Я знаю, что есть много других сообщений на эту тему, но я все еще не могу заставить его работать. Я использую Angular 8 в своем проекте и хочу отправить сообщение консоли браузера в файл журнала сервера. Может кто-нибудь, пожалуйста, прояснить вопросы для меня:
- Когда запускается window.onerror? — правильно знаю, что я поместил функцию в конструктор, это нормально? Запускается ли он, если я обслуживаю проект локально?
window.onerror = function (errorMsg, url, lineNumber) {
alert(errorMsg ' ' lineNumber);
};
- Что мне нужно сделать, чтобы он сработал? (или, например, выдает ошибку из-за отсутствия сертификата — запускает эту функцию?)
console.error(‘test’) — вызывает ли это?
выбросить новую ошибку () — или это?
- Будут ли консольные ошибки, такие как CORS, запускать эту функцию?
- Я также читал, что это сработает, если img или источник скрипта недоступны.
app.compentent.html:
<img src="test.png">
app.copmentent.ts в конструкторе (код первого пункта)
Но я все еще не получаю предупреждение для отображения.
Я благодарен за любую помощь — спасибо
Комментарии:
1. Документация
2. Спасибо — но я уже посещал этот сайт, но там у меня все еще есть вопросы. Не могли бы вы дать мне объяснение, где использовать эту функцию? (и почему я должен его использовать — в чем его польза?) @Jaromanda X
3. @angularQuestions посмотрите на developer.mozilla.org/en-US/docs/Web/API/Window/error_event для объяснения
Ответ №1:
Для вас может сработать следующее. Я использовал его в некоторых Vue.js код для проверки запуска window.onerror(). Использование eval() должно позволить вам обойти проверки Angular во время компиляции, а помещение его в window.onload() гарантирует, что он будет оценен после загрузки страницы.
window.onerror = function (message, source, lineno, colno, error) {
alert('onerror called: ' message);
}
window.onload = function () {
eval('undefined_function()');
}
В качестве меры безопасности не используйте eval() в рабочей среде, особенно если пользовательский ввод может приблизиться к нему.
Ответ №2:
Я пробовал запускать функцию ошибки с вашим кодом
window.onerror = function (errorMsg, url, lineNumber) {
alert(errorMsg ' ' lineNumber);
};
callingnonexistancefunction()
Он запускается при вызове несуществующей функции.
Надеюсь, вы получите какую-нибудь ссылку
Комментарии:
1. Спасибо за ответ — но я все еще не могу заставить его работать. Потому что в Angular он не будет компилироваться, если функция не определена. @Diwakar Итак, есть ли другой способ протестировать функцию window.onerror?