Автоматически сообщающие ошибки JavaScript разработчику

Поскольку большинство продуктивных сред, которые мы имеем, устанавливает что-то, чтобы отправить нам уведомление, если существует ошибка в нашем веб-приложении. Проблема состоит, конечно в том, что это только покрывает ошибки на стороне сервера.

Мой вопрос сообществу: Что Вы делаете о клиентских ошибках, особенно в JavaScript?

И что относительно других проблем качества обслуживания, таких как медленная обработка и другие вещи, которые могли бы произойти из-за клиентской машины?

7
задан Cine 12 April 2010 в 10:40
поделиться

2 ответа

Вы можете обрабатывать ошибки JavaScript на стороне клиента с помощью события window.onerror

Внутри обработчика сделайте Ajax-запрос к вашему серверному анализатору ошибок и запишите ошибку в журнал.

http://www.javascriptkit.com/javatutors/error.shtml

Hovewer window.onerror поддерживается не во всех браузерах, jQuery может восполнить этот пробел собственным обработчиком событий: комбинации window.onerror и jQuery(window).error должно быть достаточно

.
8
ответ дан 6 December 2019 в 14:02
поделиться

Вы мало что можете сделать с ошибками JavaScript на стороне клиента. Вы можете перехватить window.onerror и использовать его для AJAX-отчета, но:

(a) он не поддерживается в WebKit или Opera. Чтобы поймать все ошибки, вам придется заключить каждую точку входа прямого выполнения, события и тайм-аута в try {...} , что очень беспорядочно и дает вам даже меньше информации, чем onerror обработчик.

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

  • подключение к сайтам, на которых размещены скрипты, или сбой AJAX или его блокировка брандмауэрами;

  • неожиданные настройки безопасности (у браузеров есть возможность произвольно блокировать многие интерфейсы);

  • неработающие надстройки браузера, GreaseMonkey -подобные сценарии, фильтрующие прокси и фиктивные инструменты «Интернет-безопасности», вмешивающиеся в ваш код;

  • неподдерживаемые агенты, которые ведут себя странно, как мобильные браузеры (особенно ужасный IEMobile) и, если у них есть доступ, автоматизированные браузерные боты;

  • много ошибок, вызванных сторонним контентом, например рекламой, если таковая имеется.

Опять же, для приложения ограниченного использования, где вы можете напрямую связаться с любым пользователем, у которого возникают проблемы, оно может быть полезно, но для сайта, используемого широкой публикой, это не запускается.

Лучше всего использовать «прогрессивное улучшение», чтобы ваше приложение продолжало работать при сбое JavaScript.

7
ответ дан 6 December 2019 в 14:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: