Нет ничего особенного, что вы можете сделать с ошибками JavaScript на стороне клиента. Вы можете перехватить window.onerror
и использовать его для AJAX отчета, но:
(а) он не поддерживается в WebKit или Opera. Чтобы перехватить все ошибки, вам нужно обернуть каждую точку входа прямого выполнения, события и тайм-аута в try { ... }
, что очень грязно и дает вам даже меньше информации, чем обработчик onerror
.
(b) вы, вероятно, будете завалены сообщениями об ошибках, с которыми ничего не можете сделать, с небольшой возможной отладкой из-за недостатка информации. Возможно, вам удастся избежать неприятностей с приложением, к которому обращаются только те клиенты, которых вы знаете, но на общедоступном сайте многие ошибки будут ложными. Вещи, вызванные такими факторами, как:
соединения с сайтами, на которых размещены скрипты или AJAX не работает или блокируется брандмауэрами;
неожиданные настройки безопасности (в браузерах есть опции для произвольной блокировки многих интерфейсов);
неработающие надстройки браузера, GreaseMonkey-подобные скрипты, фильтрация прокси-серверов и фальшивые инструменты «Internet Security», работающие с вашим кодом;
неподдерживаемые агенты, которые ведут себя странно, например мобильные браузеры (особенно ужасающий IEMobile) и, если у них есть доступ, роботы с автоматическим браузером;
много ошибок, вызванных сторонним контентом, таким как реклама, если таковые имеются.
Опять же, для ограниченного использования приложения, где вы можете напрямую связаться с любым пользователем, у которого возникли проблемы, оно может быть полезным, но для сайта, используемого широкой публикой, это не стартер.
Лучше всего использовать «прогрессивное улучшение», чтобы гарантировать, что ваше приложение по-прежнему работает в случае сбоя JavaScript.