Как получить элемент сценария из события ошибки?Javascript

Форум по Javascript
Ответить
Anonymous
 Как получить элемент сценария из события ошибки?

Сообщение Anonymous »

На моем веб-сайте есть десятки скриптов от сторонних поставщиков, к некоторым из которых прилагаются дополнительные встроенные скрипты. Когда эти встроенные сценарии выдают ошибку, я получаю трассировку стека, как в HTMLDocument.e (:1:879). Я пытаюсь найти способ узнать, какой встроенный скрипт вызвал ошибку, которую невозможно воспроизвести.
Вот упрощенный пример проблемы:

Код: Выделить всё




// Catching errors
window.addEventListener('error', (ev) => {
// Sending error details to my backend
navigator.sendBeacon('/my-backend/on-error', JSON.stringify({
msg: ev.message,
stack: ev.error.stack
// TODO how to get id of the script or anything else that would allow to identify it?
}))
});


// Some external script producing inline scripts, which throw errors
const addScript = (index) => {
const script = document.createElement('script');
script.id = `script-${index}`;
script.textContent = `
if (Math.random() < 0.${index}) throw new Error('test');
`;
document.body.appendChild(script);
}
addScript(5);
addScript(6);
addScript(7);



В событии ошибки или трассировке стека я не вижу способа узнать, выдал ли скрипт-5, скрипт-6 или скрипт-7 ошибку. Я мог бы узнать, к какому внешнему сценарию прикреплен встроенный сценарий (с помощью обезьяньего исправления body.appendChild), но я не знаю, как связать ошибку с конкретным сценарием.
Свойство filename пусто, target и srcElement являются окном. Трассировки стека одинаковы в случае этих трех скриптов, хотя у них немного разный код и идентификаторы.

Подробнее здесь: https://stackoverflow.com/questions/798 ... rror-event
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»