Поскольку большинство продуктивных сред, которые мы имеем, устанавливает что-то, чтобы отправить нам уведомление, если существует ошибка в нашем веб-приложении. Проблема состоит, конечно в том, что это только покрывает ошибки на стороне сервера.
Мой вопрос сообществу: Что Вы делаете о клиентских ошибках, особенно в JavaScript?
И что относительно других проблем качества обслуживания, таких как медленная обработка и другие вещи, которые могли бы произойти из-за клиентской машины?
Вы можете обрабатывать ошибки JavaScript на стороне клиента с помощью события window.onerror
Внутри обработчика сделайте Ajax-запрос к вашему серверному анализатору ошибок и запишите ошибку в журнал.
http://www.javascriptkit.com/javatutors/error.shtml
Hovewer window.onerror поддерживается не во всех браузерах, jQuery может восполнить этот пробел собственным обработчиком событий: комбинации window.onerror и jQuery(window).error должно быть достаточно
. Вы мало что можете сделать с ошибками JavaScript на стороне клиента. Вы можете перехватить window.onerror
и использовать его для AJAX-отчета, но:
(a) он не поддерживается в WebKit или Opera. Чтобы поймать все ошибки, вам придется заключить каждую точку входа прямого выполнения, события и тайм-аута в try {...}
, что очень беспорядочно и дает вам даже меньше информации, чем onerror
обработчик.
(b) вы, скорее всего, будете завалены отчетами об ошибках, с которыми ничего не сможете сделать, с небольшой возможной отладкой из-за недостатка информации. Возможно, вам удастся избежать этого в приложении, к которому имеют доступ только клиенты, которых вы знаете, но на сайте с открытым доступом многие ошибки будут ложными. Вещи, вызванные такими факторами, как:
подключение к сайтам, на которых размещены скрипты, или сбой AJAX или его блокировка брандмауэрами;
неожиданные настройки безопасности (у браузеров есть возможность произвольно блокировать многие интерфейсы);
неработающие надстройки браузера, GreaseMonkey -подобные сценарии, фильтрующие прокси и фиктивные инструменты «Интернет-безопасности», вмешивающиеся в ваш код;
неподдерживаемые агенты, которые ведут себя странно, как мобильные браузеры (особенно ужасный IEMobile) и, если у них есть доступ, автоматизированные браузерные боты;
много ошибок, вызванных сторонним контентом, например рекламой, если таковая имеется.
Опять же, для приложения ограниченного использования, где вы можете напрямую связаться с любым пользователем, у которого возникают проблемы, оно может быть полезно, но для сайта, используемого широкой публикой, это не запускается.
Лучше всего использовать «прогрессивное улучшение», чтобы ваше приложение продолжало работать при сбое JavaScript.