Im exécutant un site ASP.NET où j'ai des problèmes pour trouver des erreurs JavaScript juste avec des tests manuels.
Est-il possible de détecter toutes les erreurs JavaScript du côté client et de les enregistrer sur le serveur, c'est-à-dire dans le EventLog (via Webservice ou quelque chose du genre)?
javascript
logging
error-handling
MADMap
la source
la source
Réponses:
Vous pouvez essayer de configurer votre propre gestionnaire pour l' événement onerror et utiliser XMLHttpRequest pour indiquer au serveur ce qui n'a pas fonctionné, mais comme cela ne fait partie d'aucune spécification, le support est quelque peu irrégulier .
Voici un exemple de Utilisation de XMLHttpRequest pour consigner les erreurs JavaScript :
la source
setInterval
méthode. Il existe de nombreux services de rapport d'erreurs JS disponibles sur le Web. Commander ErrLytics . Il vous donne également des analyses de chaque action de l'utilisateur sur votre site Web.Réponse courte: Oui, c'est possible.
Réponse plus longue: les gens ont déjà écrit sur la façon dont vous pouvez (au moins partiellement) résoudre ce problème en écrivant votre propre code. Cependant, notez qu'il existe des services qui semblent avoir veillé à ce que le code JS nécessaire fonctionne dans de nombreux navigateurs. J'ai trouvé ce qui suit:
Je ne peux parler pour aucun de ces services car je ne les ai pas encore essayés.
la source
Je viens de mettre en œuvre la journalisation des erreurs côté serveur sur les erreurs javascript sur un projet au travail. Il existe un mélange de code hérité et de nouveau code utilisant jQuery .
J'utilise une combinaison de
window.onerror
et d'encapsulation des gestionnaires d'événements jQuery et de la fonction onready avec une fonction de gestion des erreurs (voir: Suivi des erreurs JavaScript: Pourquoi window.onerror ne suffit pas ).window.onerror
: intercepte toutes les erreurs dans IE (et la plupart des erreurs dans Firefox), mais ne fait rien dans Safari et Opera.Une fois que j'ai détecté l'erreur, j'y ajoute des propriétés supplémentaires (URL, navigateur, etc.), puis la poste sur le serveur à l'aide d'un appel ajax.
Sur le serveur, j'ai une petite page qui prend juste les arguments publiés et les envoie à notre cadre de journalisation de serveur normal.
Je voudrais ouvrir le code pour cela (en tant que plugin jQuery). Si quelqu'un est intéressé, faites-le moi savoir, cela aiderait à convaincre les patrons!
la source
Si vous utilisez Google Analytics, vous pouvez enregistrer les erreurs JavaScript dans les événements Google Analytics.
Voir cette application: http://siteapps.com/app/log_javascript_errors_with_ga-181
J'espère que ça aide.
la source
Je recommande également d'utiliser l' utilitaire TraceTool , il est livré avec le support JavaScript et est très pratique pour la surveillance JS.
la source
Si vous souhaitez enregistrer les erreurs côté client sur le serveur, vous devrez effectuer une sorte de traitement serveur. Le mieux serait d'avoir un service Web auquel vous pouvez accéder via JavaScript (AJAX) et que vous lui transmettez les informations de votre journal d'erreurs.
Ne résout pas à 100% le problème car si le problème vient du serveur Web hébergeant le service Web que vous rencontrez, une autre option serait d'envoyer les informations via une page standard via une chaîne de requête, une méthode de cela se fait via la génération dynamique de balises Image (qui sont ensuite supprimées) car le navigateur essaiera de charger la source d'une image. Cependant, il contourne bien les appels JavaScript inter-domaines. Gardez à l'esprit que vous avez des problèmes si quelqu'un a désactivé les images;)
la source
J'ai récemment utilisé Appfail , qui capture à la fois les erreurs asp.net et JavaScript
la source
Vous pourriez potentiellement faire un appel Ajax au serveur à partir d'un try / catch, mais c'est probablement le mieux que vous puissiez faire.
Puis-je suggérer des tests unitaires JavaScript à la place? Peut-être avec JSUnit ?
la source