2010-08-28 4 views
2

J'essaye de déconstruire une partie de Gmail et je n'arrive pas à trouver ce qui se passe (quelles fonctions sont appelées) quand on clique sur un bouton spécifique.Comment puis-je savoir quelle fonction JavaScript est appelée lorsque je clique sur quelque chose sur une page?

J'utilise l'inspecteur de Google Chrome et trouvé le code HTML pour le bouton:

<tbody id=":8y" class="vC " idlink="" role="option" aria-labelledby=":8x :8w"><tr class="vI"><td><img class="vt SFzvCe IRnhDe BUw1sf" id=":8x" src="images/cleardot.gif" alt="Call phone"></td><td id=":8v" class="vr" colspan="2"><span id=":8w" class="HHshnc ">Call phone</span></td></tr></tbody> 

Dans la section "Les auditeurs de l'événement" de l'inspecteur sous "cliquez sur" J'ai obtenu cette information:

isAttribute: false 
lineNumber: 213 
listenerBody: function B(H){return g.call(B.src,B.key,H)} 
node: tbody#:8y 
sourceName: https://mail.google.com/mail/u/0/?ui=2&view=js&name=main,tlist&ver=q0qiADndhKA.en.&am=!k3sV9... 
type: click 
useCapture: true 

mais cela ne m'aide pas à comprendre ce qu'on appelle onClick. Ce que j'essaye de faire est de créer un script Greasemonkey qui ajoutera ce bouton à Gmail quand il n'existe pas sur une page.

TIA!

+0

Que fait la fonction B (H) {return g.call (B.src, B.key, H)} "alors? – donohoe

+0

Pas sûr, mais ce n'est pas l'appel à la fonction dans tous les cas (c'est la fonction elle-même). J'essaye de recréer le bouton alors j'ai besoin de quelque chose comme onClick = "B (quelque chose)" qui appelle cette fonction (je suppose). Je n'ai pas été capable de trouver des informations sur ce que ListenerBody signifie. – Guy

+0

Methinks listenerBody * est la fonction qui est appelée lorsque le bouton est cliqué. Bonne chance avec 'B.key' là, je suis sûr que c'est unique par utilisateur. – syockit

Répondre

1
function B(H){return g.call(B.src,B.key,H)} 

est clairement une fonction d'encapsulation qui appelle g. Function.call

[c] alls en fonction d'une valeur donnée et this arguments fournis individuellement.

Comme vous pouvez le lire sur la page MDC liée, le premier argument est l'objet this à l'intérieur g, dans ce cas B.src. Le deuxième et le troisième paramètre sont transmis en tant que paramètres à g. Vous devrez donc rechercher une fonction nommée g. La méthode toString peut être utile. Cela dit, étant donné l'objectif que vous essayez d'atteindre ("créer un script Greasemonkey qui ajoutera ce bouton à Gmail quand il n'existe pas sur une page"), je pense que cela ne vaut pas le coup. Si le bouton n'existe pas, je suppose qu'il n'existe pas pour une raison (par exemple, g n'étant pas disponible sur cette page, ou une autre fonction dorsale).

+0

Pas tout à fait sûr que j'ai compris ce que vous vouliez dire avec toString. Je suis à peu près sûr que cela fonctionnera. La raison pour laquelle le bouton n'est pas sur la page est que la fonctionnalité n'est pas disponible dans certains pays. J'ai eu une fenêtre de navigateur ouverte avec la fonctionnalité avant de quitter le pays et quand j'ai atterri le bouton a continué à travailler (dans le pays où il n'est pas disponible). – Guy

+0

@Guy - Avez-vous suivi [le lien] (https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/Function/toString) (Je sais qu'il peut être difficile de voir que c'est un lien)? Appelez simplement quelque chose comme 'g.toString()' dans votre console et vous verrez le contenu de 'g'. Vous pouvez ensuite utiliser http://jsbeautifier.org/ pour reformater la fonction. –

+0

Merci, je l'ai vérifié. – Guy

Questions connexes