Автоматическая обратная связь по ошибке JavaScript

Есть ли способ получить автоматическую обратную связь, если возникает ошибка (даже синтаксические ошибки) при запуске JavaScript на стороне клиента?

Я думал о чем-то вроде этого:

<script src="debugger.js"></script>
<script>
    // some script with an error in it
</script>

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

Ответы

Ответ 1

EDIT: я неправильно понял ваш вопрос, это должно работать:

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

window.onerror = function(msg,u,l)
{
    txt ="Error: " + msg + "\n";
    txt+="URL: " + u + "\n";
    txt+="Line: " + l + "\n\n";
    //Insert AJAX call that passes data (txt) to server-side script
    return true;
};

Что касается синтаксических ошибок, вам не повезло. Javascript просто умирает, когда есть синтаксическая ошибка. Нет никакого способа справиться с этим.

Ответ 2

Один из методов заключается в использовании Ajax для Журнала ошибок Javascript

Каждая ошибка javascript может быть захвачена в событии window.onerror. Мы можем вернуть true или false, чтобы мы могли выбрать, будет ли пользователь видеть обычный диалог ошибок javascript. Этот script будет в очень маловероятном случае ошибки javascript собрать информацию об ошибке и отправить httprquest на страницу, которая будет регистрировать ошибку javascript в базе данных.

Ответ 3

Я не уверен в синтаксических ошибках, но можно поймать js-ошибки, используя событие window.onerror. Поиск "ошибок регистрации в javascript" в google дает вам много результатов...

Запись ошибок JavaScript на ASP.NET: http://james.newtonking.com/archive/2006/05/02/Logging-JavaScript-Errors-To-ASP.NET.aspx (К сожалению, ссылка для загрузки в сообщении не работает).

Регистрация ошибок JavaScript на стороне клиента на сервере: http://www.codeproject.com/KB/ajax/logclientsidejserrors2srv.aspx

Уведомления об ошибках JavaScript: http://www.thecodepage.com/post/JavaScript-Error-Notifications.aspx

Ответ 4

window.onerror = MyFunction (msg, url, line);

появляется окно с информацией об ошибке, типом браузера (т.е. navigator.userAgent) и т.д., все в полях, отмеченных READONLY, и приглашающих пользователя для их отправки.

У нас есть флажок "Не показывать это снова", который хранится в файле cookie сеанса, поэтому, если они продолжают получать ошибки, чем отключить всплывающее окно.

Несмотря на то, что мы думали, что это "здорово", мы получаем очень мало отчетов - и я не уверен, что это связано с тем, что мы приближаемся к нулевым ошибкам во время выполнения!

Ответ 5

Вероятно, лучше всего отправить только один отчет об ошибке на страницу. Если вы получаете ошибку на повторяющемся таймере или сам AJAX рекурсивно вызывает ошибку, вы можете закончить заполнение вашего журнала бесполезным нежелательным файлом.

Кроме того, будьте готовы получить неразрешимые ошибки, вызванные такими вещами, как:

  • прокси-серверы безопасности с вашим кодом
  • скрипты из заблокированных сайтов
  • несущественные ошибки браузера Chrome из расширений
  • IE Mobile, худший браузер в мире

Ответ 6

Самый простой способ для меня - установить это приложение с SiteApps Marketplace:

http://siteapps.com/app/log_javascript_errors_with_ga-181

Как только вы установили тег платформы, вы можете установить множество приложений, и один из них очень полезен для меня. Я использую его на 14 веб-сайтах, которые я разработал, и я мог отслеживать ошибки JavaScript в Google Analytics.

Надеюсь, это поможет.

Леандро