Существует ли глобальный подход для обнаружения сетевых ошибок в javascript

Я изучаю возможность автоматического обнаружения ошибок на странице через Javascript. Я нашел несколько вопросов, в которых ответ позволяет поймать компиляцию Javascript и ошибки времени выполнения во всем мире через window.onerror, но ответы не упоминаются в других типах ошибок, отличных от Javascript, которые часто сообщаются в консолях ошибок браузера. Я в первую очередь интересуюсь сетевыми ошибками (недопустимыми ошибками URI, ошибками SSL, ошибками HTTP, таймаутами) и ошибками интерпретации ресурсов (несоответствие типов, приводящее к прерыванию интерпретации ресурса, анализу ошибок на загружаемых ресурсах и т.д.).

Я проверил метод performance.getEntries, но я сбив с толку, обнаружив, что он не содержит сетевых запросов, которые привели к ошибкам (я проверял только в Chrome 29...)

Мне не нужна полная совместимость с перекрестным браузером. Пока он работает на некоторых браузерах и не нарушает других, это прекрасно.

Ответы

Ответ 1

Обработчик window.onerror хорошо работает в Chrome 13+, Firefox 6.0+, Internet Explorer 5.5+, Opera 11.60+ и Safari 5.1 +. Там уже есть fooobar.com/info/24851/..., который содержит много информации об этом.

Что касается других элементов (например, изображений), jQuery предоставляет метод .error() для подключения обработчика событий ошибки, чтобы предупредить пользователя, когда изображение или внешний script не удается нагрузки. Если вы не можете использовать jQuery, тогда еще один вариант - предварительно загрузить все изображения/внешние ресурсы через XMLHttpRequest и прослушать status (код ответа HTTP) запроса (ничего, кроме 200 OK или 304 Not Modified это то, что вы хотите вернуть ошибку). Недостатком этого является то, что, поскольку обработчики событий и т.д. Должны быть прикреплены до того, как страница будет полностью загружена, любой, у кого отключен JavaScript, будет искать фрагментированную, возможно, пустую страницу.

Недопустимые URI и ошибки HTTP лучше всего обрабатывать на стороне сервера. Хорошо сформированный файл .htaccess в сочетании с Apache mod_rewrite (или эквивалент) может обеспечить много амортизации для плохих запросов на сервер.