Ошибки JavaScript на клиенте на сервере

Я запускаю сайт ASP.NET, где у меня возникают проблемы с поиском ошибок JavaScript с помощью ручного тестирования.

Есть ли возможность уловить все ошибки JavaScript на Clientside и зарегистрировать их на сервере, то есть в EventLog (через Webservice или что-то в этом роде)?

Ответ 1

Вы можете попробовать настроить свой собственный обработчик для события поддержка несколько неровная.

Вот пример из Использование XMLHttpRequest для регистрации ошибок JavaScript:

window.onerror = function(msg, url, line)
{
  var req = new XMLHttpRequest();
  var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
  req.open("POST", "/scripts/logerror.php");
  req.send(params);
};

Ответ 2

Краткий ответ: да, это возможно.

Более длинный ответ: Люди уже написали о том, как вы можете (хотя бы частично) решить эту проблему, написав свой собственный код. Тем не менее, обратите внимание, что существуют службы, которые, по-видимому, обеспечили работу необходимого кода JS во многих браузерах. Я нашел следующее:

Я не могу говорить ни за одну из этих услуг, поскольку я еще не пробовал их.

Ответ 3

Я только что внедрил регистрацию ошибок на стороне сервера на ошибках javascript в проекте на работе. Существует смесь устаревшего кода и нового кода с использованием jQuery.

Я использую комбинацию window.onerror и обертываю обработчики событий jQuery и функцию onready с помощью функции обработки ошибок (см. Отслеживание ошибок JavaScript: почему окно. onerror is Not Enough).

  • window.onerror: ловит все ошибки в IE (и большинство ошибок в Firefox), но ничего не делает в Safari и Opera.
  • Обработчики событий jQuery: захватывает ошибки события jQuery во всех браузерах.
  • Функция jQuery ready: улавливает ошибки инициализации во всех браузерах.

Как только я поймал ошибку, я добавлю дополнительные свойства (url, browser и т.д.), а затем отправьте ее обратно на сервер с помощью вызова ajax.

На сервере у меня есть небольшая страница, которая просто берет опубликованные аргументы и выводит их в нашу обычную инфраструктуру ведения журнала.

Я хотел бы открыть исходный код для этого (в качестве плагина jQuery). Если кто-то заинтересован, дайте мне знать, это поможет убедить боссов!

Ответ 4

Если вы используете Google Analytics, вы можете регистрировать ошибки JavaScript в событиях Google Analytics.

Смотрите это приложение: http://siteapps.com/app/log_javascript_errors_with_ga-181

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

Ответ 5

Вы могли бы сделать вызов Ajax на сервер с помощью try/catch, но это, вероятно, самое лучшее, что вы можете сделать.

Могу я предложить вместо этого JavaScript-тестирование? Возможно, с JSUnit?

Ответ 6

Также я рекомендую использовать утилиту TraceTool, она поставляется с поддержкой JavaScript и очень удобна для мониторинга JS.

Ответ 7

Если вы хотите зарегистрировать ошибки на стороне клиента на сервере, вам придется выполнять какую-либо обработку сервера. Лучшая ставка будет заключаться в том, чтобы иметь веб-сервис, доступ к которому вы можете получить через JavaScript (AJAX), и вы передаете ему информацию журнала ошибок.

Не разрешает ли 100% проблема, если проблема связана с тем, что веб-сервер, на котором находится веб-служба, у вас проблемы, другой вариант - отправить информацию через стандартную страницу с помощью строки запроса, Один из способов сделать это - динамически генерировать теги изображений (которые затем удаляются), когда браузер попытается загрузить источник изображения. Тем не менее, он обожает междоменные JavaScript-вызовы. Имейте в виду, что у вас проблемы, если у кого-то отключены изображения;)

Ответ 8

Недавно я использовал Appfail, который фиксирует ошибки asp.net и JavaScript