2010-10-27 4 views
1

Connaissez-vous un moyen d'utiliser JQuery pour obtenir des éléments JavaScript d'une page Web? Par exemple, obtenir tous les noms de fonction JavaScript utilisés dans la page, etc. Merci!JQuery - Obtenir toutes les fonctions JS

+0

Qu'entendez-vous par * noms de fonctions utilisés dans la page *? Que diriez-vous des fonctions anonymes qui pourraient résider dans différentes portées? –

+0

En fait, cela ne me dérange pas si ce sont des noms de fonctions ou le corps entier des fonctions. Donc, ce pourrait être aussi les fonctions anonymes. –

Répondre

0

pas tout à fait sûr que cela fonctionne, mais ...

$("script").remove(); 

ne marche pas supprimer des fonctions, mais seulement doit supprimer complètement tous les éléments de script.

EDIT

NVM pensé que je vous ai lu voulu supprimer les fonctions

+2

Essayez de relire la question. Maintenant lis ta réponse. Toute relation? –

0

Obtenir tous les noms de fonction est quelque chose qui jquery ne devrait pas être nécessaire pour - il est plus d'une question linguistique.

Vous pouvez obtenir toutes les fonctions et variables de la portée globale en regardant l'objet window, puisque tout ce qui est dans la portée globale dans le navigateur est vraiment une propriété de cet objet. Cependant, il contiendra tous les des variables de la portée globale, y compris celles qui y figurent par défaut et qui ne sont pas ajoutées par un autre script. Vous pouvez parcourir toutes les propriétés de l'objet window avec une boucle for...in. Voici un exemple:

for (var obj in window) { 
     // obj is just the name of each property 
     // do stuff with window[obj] 
    } 

Cependant, si cela n'est pas strictement nécessaire, vous devriez vraiment l'éviter. C'est possible, mais j'y réfléchirais à deux fois avant de faire ça et serais très prudent.

+0

Merci pour votre réponse. Malheureusement, le code ci-dessus ne fonctionnera pas sur Chrome et Firefox. Avez-vous une idée de comment puis-je le faire fonctionner sur IE? –

+1

@Avi, c'est un vieux bug, qui n'a malheureusement pas de solution de contournement. IE ne peut énumérer aucune déclaration de fonction (par exemple: 'function foo() {}') faite dans la portée globale, les propriétés sont créées dans l'objet global, mais 'for-in' ne les visite pas. Plus d'informations [ici] (http://blogs.msdn.com/b/ericlippert/archive/2005/05/04/414684.aspx). – CMS

+0

@CMS - merci! –

Questions connexes