Ведение журнала ошибок JavaScript на стороне клиента на сервере [закрыто]

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

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

8 ответов


вы можете попробовать настроить свой собственный обработчик для события onerror и используйте XMLHttpRequest, чтобы сообщить серверу, что пошло не так, однако, поскольку это не является частью какой-либо спецификации,поддержка несколько flaky.

вот пример использование 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);
};

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

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

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


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

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

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

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

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

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


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

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

надеюсь, что это помогает.


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


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

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


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


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

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