2010-03-26 3 views

Répondre

3
var funcs = []; 

for(var prop in window) { 
    if(window.hasOwnProperty(prop) && typeof window[prop] === 'function') { 
    if(window[prop].toString().indexOf("[native code]") === -1) { 
     funcs.push(window[prop]); 
    } 
    } 
} 
+0

Je reçois une erreur lors de l'exécution dans Firefox. "Opération non supportée" code: "9" – qodeninja

+0

@codeninja: essayez ce SSCCE sur http://jsbin.com/ufoju3/2/. Cela fonctionne absolument bien pour moi dans Firefox. @Josh: +1 pour la fonction. –

1

Il n'y a pas de méthode croix navigateur. Dans Internet Explorer, les variables et fonctions définies deviennent membres de l'objet window mais ne sont pas énumérables. Vous pouvez vérifier leur existence en utilisant funcName in window, mais vous ne pouvez pas les énumérer en utilisant une instruction for...in.

variables qui sont définies comme propriétés de l'objet de la fenêtre sont dénombrable:

function someFunc() {} // is not enumerable 
window.someOtherFunc = function() {} // is enumerable 

EDIT la mise en œuvre de JScript est (surprise, surprise) fait mal, comme indiqué dans this blog post by Eric Lippert.

Mais je ne pense pas que vous voulez préfixer toutes vos variables avec window., et vous? Pour une méthode qui fonctionnera dans certains navigateurs, voir Josh Stodola's answer.

+0

Je n'ai pas besoin d'une réponse croisée. J'ai seulement besoin de faire cela dans Firefox. les méthodes ci-dessus retournent une erreur – qodeninja

+0

@codeninja: il semble que Firefox ne permette pas non plus d'énumérer les fonctions et les variables. –

+0

@codeninja: Le code de Josh fonctionne très bien pour moi dans Firefox - SSCCE sur http://jsbin.com/ufoju3/2/ –

1

Peut-être trop simple, mais si Firebug est activé, connectez-vous à window à la console. En cliquant dessus, tous les membres de window seront énumérés. Cela vous aidera si vous avez besoin d'une liste visuelle rapide, mais si vous agissez sur tous les membres de window, vous devrez utiliser l'une des autres méthodes affichées dans les commentaires.

Quelque chose comme for(var i in window) vous mettra sur la bonne voie.

Questions connexes