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

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

Я думал примерно так:

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

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


person Gumbo    schedule 13.02.2009    source источник


Ответы (6)


РЕДАКТИРОВАТЬ: Сначала я неправильно понял ваш вопрос, это должно сработать:

Также обратите внимание, что это нужно делать ДО любого 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 просто умирает, когда возникает синтаксическая ошибка. Нет никакого способа справиться с этим.

person Andrew Ensley    schedule 13.02.2009
comment
Я тоже об этом думал. Но похоже, что это делает именно Firefox. Safari и Opera молчат, когда я пытаюсь предупредить сообщение. - person Gumbo; 13.02.2009
comment
Хорошо, возможно, это просто предупреждение, которое не работает. Печать сообщения об ошибке делает. Думаю, все. Спасибо. - person Gumbo; 13.02.2009
comment
Работает в FF. Чтобы заставить его работать в IE, вам нужно отключить отладку скриптов на вкладке «Дополнительно» в настройках Интернета. У меня нет возможности работать ни в Chrome, ни в Opera. - person some; 14.02.2009
comment
Вы также можете использовать блоки try / catch и сообщать об ошибках в блоке catch. - person Josh; 17.09.2009
comment
Я только что выпустил код, который помогает регистрировать ошибки JavaScript, отправляя информацию об ошибках на сервер - thecodepage.com/post/JavaScript-Error-Notifications.aspx - person Gabriel McAdams; 02.02.2010

Один из способов - использовать Ajax для ведения журнала ошибок Javascript.

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

person Gulzar Nazim    schedule 13.02.2009
comment
Я искал эту страницу .. +1 - person Luca Matteis; 13.02.2009
comment
Спасибо за ссылку на эту полезную функцию. Я попытаюсь. - person Gumbo; 13.02.2009

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

Регистрация ошибок 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

person Alex Reitbort    schedule 13.02.2009

window.onerror = MyFunction (сообщение, URL, строка);

мы открываем окно с подробностями об ошибке, типом браузера (например, navigator.userAgent) и т. д. в полях, помеченных ТОЛЬКО ДЛЯ ЧТЕНИЯ и предлагающих пользователю отправить их.

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

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

person Kristen    schedule 13.02.2009

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

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

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

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

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

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

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

Леандро

person Leandro Lages    schedule 15.04.2013