10
votes

JavaScript: Comment déboguer des événements de clavier

Imaginez une application Web qui utilise des gestionnaires d'événements de clavier personnalisés qui pourraient effectuer des événements de bulletage - ou de l'événement.
Y a-t-il un moyen (par exemple, ADDON Firefox / Firebug) à Déboguer chaque frappe de frappe / clavier , quelque chose comme:

  • Affichage du type d'événement et de tous les attributs
  • trace quelle méthode JavaScript avait été appelée
  • En cas d'événement, bouillonnant que d'autres méthodes ont été appelées

    Pour clarifier ma question: Je ne sais pas quels manutentionnements de la méthode existent et où ils sont définis - c'est ce que j'essaie de le savoir.


0 commentaires

3 Réponses :


0
votes

Je ne connais aucune extension à cette fin. Mais vous pouvez écrire des gestionnaires pour des événements clés, puis imprimer une sortie appropriée sur la console JavaScript. Aussi, vous pouvez aussi jeter des traces. Firebug a intégré la fonctionnalité de trace: console.trace () . Vous pouvez utiliser Google avec js Trace Mots-clés pour trouver des outils de trace aussi.

Cette page est un bon exemple pour gérer les événements du clavier. < / p>


1 commentaires

Pour cela, je dois savoir où sont définis les gestionnaires de la clé de l'événement. Mais c'est exactement la raison de ma question, je ne sais pas quelles méthodes de gestionnaire d'événements sont invoquées. Imaginez un très grand et ancien système logiciel - les choses pourraient devenir difficiles à trouver toutes.




1
votes

in IE Vous pouvez utiliser le mot-clé ; code>. Pas sûr de la convivialité des X-navigateur: xxx pré>

dans le contexte de votre défi: p> xxx pré>

Je trouve que cela est le plus efficace Technique de débogage, mais encore une fois, je passe beaucoup de temps à IE. Beaucoup de gens sont confortables avec Firebug mais je le trouve causser et beaucoup moins intuitif que le débogueur d'IE. Le débogueur de IE permet de faciliter l'évaluation des montres et de l'expression, et fournit également des info-bulles basées sur une réflexion interactive (comme vs débogueur). P>

aussi, selon votre question "trace quelle méthode a été appelée" - la pile d'appel est très réactive et Facile à suivre Retour / UP. P>

Mise à jour: p>

Voici un script à placer au bas de chaque page aux événements piège et débogage, IE: P>

<script type="text/javascript">
    function wrapIfHandled(el, evt) {
        if (el && evt && el['on' + evt]) {
            el['_on' + evt] = el['on' + evt];
            el['on' + evt] = function (e) {
                foo(e, el['_on' + evt]);
            };
        }
    }

    function wrapAll() {
        var allEl = document.getElementsByTagName("*");
        for (var i = 0; i < allEl.length; i++) {
            wrapIfHandled(allEl[i], 'click');
            // wrapIfHandled(allEl[i], other event names <keyup, keydown, etc>
        }
    }

    function foo(e, d) {
        debugger;
        d(e);
    }

    wrapAll();
</script>


4 commentaires

Pour cela, je dois savoir quelles méthodes sont utilisées comme gestionnaires d'événements - mais c'est ce que j'essaie de le savoir.


Pouvez-vous fournir un peu plus de détails sur votre problème? Vous n'avez pas accès au code JavaScript, page HTML / Java / PHP / ASPX? Ou les deux? Avez-vous accès à un code source du tout?


Oui, j'ai accès au code source. Imaginez une ancienne application Web qui définit individuellement les gestionnaires d'événements par page et non dans un lieu général. J'ai le problème que dans certains navigateurs à certaines pages, certains clés de frappe ne fonctionnent pas correctement (mais il n'y a pas d'erreurs JavaScript). J'ai besoin d'un outil pour tracer tous les événements du clavier pour pouvoir voir rapidement où l'événement est traité.


J'ai fait de mon mieux pour vous aider - ne savez-vous pas comment votre site fonctionne et de ce que vous utilisez pour la gestion des événements, mais s'il n'y a pas de composant d'observateur tiers en place, le code devrait être DWARE.