web-dev-qa-db-fra.com

Détectez automatiquement les erreurs javascript et avertissez l'utilisateur du thème

Cela peut sembler simple, mais ce n'est pas :)

Ce que je veux, et que font probablement de nombreux développeurs de thèmes (thèmes utilisant javascript/jquery), est d'avertir l'utilisateur du thème que son site contient des erreurs javascript.

Dans mes thèmes au moins, dans environ 95% de ces situations d'erreur, le problème provient de plug-ins installés obsolètes/mal écrits. Les 5% restants proviennent de conflits entre les plugins les plus récents et le thème. Donc, mon message suggère à l'utilisateur de vérifier ses plugins un par un et de résoudre les problèmes.

J'ai trouvé une solution pour cela, mais uniquement pour le tableau de bord (dans les paramètres de mon thème). Ce que je fais est essentiellement de charger la page d'accueil dans une iframe et d'attendre 5 secondes pour qu'une fonction à l'intérieur de la document.ready() de l'iframe m'envoie le message "OK". Si cela ne se produit pas, j'affiche l'erreur (j'utilise postMessage pour communiquer avec le document iframe).

Quoi qu'il en soit, ma question est de savoir comment puis-je le faire aussi à partir de la première page? Sans utiliser pm, car il est trop lourd (dans les paramètres de thème, c'est correct, car il est également utilisé pour les ajustements de conception en direct)

Autres solutions peu fiables:

  • ajoutez le message juste après <body> et cachez-le avec javascript (avec js après le message); le problème est que des erreurs peuvent survenir après la vérification
  • ajoutez le message n'importe où dans le code HTML et supprimez-le avec jQuery sur document.ready; inacceptable car l'utilisateur voit le message pendant 2-3 secondes, au cours desquelles le site est chargé ...
1
onetrickpony

Pourquoi ne pas simplement utiliser l'outil "développeur" du navigateur pour afficher les erreurs et le code qui a provoqué l'erreur? Je sais pertinemment que IE, Firefox et Safari disposent chacun d'outils de développement (je les utilise tout le temps). Je ne connais pas les capacités des autres navigateurs.

2
user10418

Vient de faire une recherche rapide pour voir si JavaScript a une fonction globale de gestion des erreurs que vous pouvez utiliser et qui a été trouvée window.onerror . Je n'ai donc pas cherché plus loin pour voir s'il est bien supporté, mais vous pouvez probablement utiliser la fonction window.onerror pour envoyer une requête ajax à php qui pourrait envoyer une page, un navigateur, probablement des informations de script ayant échoué, etc. puis utiliser php envoyer un courriel à l'administrateur envoyer cette information par courriel. De cette façon, tout utilisateur visitant le site pourrait déclencher cette action.

1
patnz