Плагин для отправки на сервер лога JS-ошибок в браузере.
Передаваемые данные:
- Сайт, на котором возникла ошибка
- Сообщение об ошибке
- Файл с ошибкой
- Браузер пользователя
- Версия браузера
- Операционная система пользователя
Для работы пакетного менеджера на сервере должен быть установлен Node JS. Устанавливается одной простой коммандой в консоли:
npm install catch-js-errors
Подключаем его в начале страницы до вызова всех скриптов (Путь к файлу у Вас может отличаться, проверьте)
<script src="/local/static/node_modules/catch-js-errors/index.js" type="text/javascript">
Если сайт на CMS 1С-Битрикс, то, для того, чтобы скрипт не переносился вниз страницы со всеми остальными скриптами, ему нужно добавить параметр
data-skip-moving="true"
В таком случае, вызов будет выглядеть так:
<script src="/local/static/node_modules/catch-js-errors/index.js" data-skip-moving="true" type="text/javascript">
jQuery не используется, поэтому скрипт можно спокойно добавлять до вызова библиотеки.
При возникновении Синтаксических ошибок (SyntaxError) скрипт, к сожалению, срабатывать не будет. В дальнейшем этот недочёт устранится.
Внутри скрипта отправки добавлен скрипт определения браузера, найденный на сайте https://yraaa.ru/scripts/opredelenie-brauzera-javascript
Помимо самого браузера, он определяет его версию и Операционную систему, через которую открывается браузер. В некоторых случаях, редко, не совсем верно определяется, типо вместо андроида он пишет, что линукс.
В данный момент ошибки отправляются на сайт "error-listener.w6p.ru" и пока этот параметр не меняется. В дальнейшем для универсальности использования этот момент доработается.
Этим скриптом данные просто передаются на сервер. Как на сервере эти данные обрабатывать, решать Вам: записывать в лог, сохранять в файл, каким-то образом фильтровать или что-то ещё - на Ваше усмотрение. Здесь представлена только js-составляющая всего процесса.
Ещё стоит отметить, что для того, чтобы корректно принимать данные на удалённом сервере, он должен быть настроен соответствующим образом. На эту тему есть полезные статьи:
http://javascript.ru/ajax/cross-domain-scripting, http://javascript.ru/ajax/cross-origin-2