Afficher la liste de toutes les variables JavaScript dans la console Google Chrome


237

Dans Firebug, l'onglet DOM affiche une liste de toutes vos variables et objets publics. Dans la console de Chrome, vous devez saisir le nom de la variable ou de l'objet public que vous souhaitez explorer.

Existe-t-il un moyen - ou au moins une commande - pour la console de Chrome d'afficher une liste de toutes les variables et objets publics? Cela économisera beaucoup de frappe.

Réponses:


330

Est-ce le type de sortie que vous recherchez?

for(var b in window) { 
  if(window.hasOwnProperty(b)) console.log(b); 
}

Cela listera tout ce qui est disponible sur l' windowobjet (toutes les fonctions et variables, par exemple, $et jQuerysur cette page, etc.). Cependant, c'est tout à fait une liste; Je ne sais pas à quel point c'est utile ...

Sinon, faites-le windowet commencez à descendre dans son arbre:

window

Cela vous donnera DOMWindowun objet extensible / explorable.


4
@ntownsend -Ma console n'est pas d'accord avec vous :) C'est une propriété deobject , pourquoi ne l'aurait-elle pas?
Nick Craver

9
"pourquoi ne l'aurait-il pas?" La [[Prototype]]propriété interne de l'objet global dépend de l'implémentation , dans presque toutes les implémentations principales -V8, Spidermonkey, Rhino, etc.-, l'objet global hérite à un moment donné de Object.prototype, mais par exemple dans d'autres implémentations -JScript, BESEN, DMDScript, etc. ..- ça n'existe pas, donc window.hasOwnPropertyça n'existe pas, pour le tester on peut:Object.prototype.isPrototypeOf(window);
CMS

10
@CMS - Oui c'est vrai ... mais la question concerne spécifiquement Chrome, donc l'implémentation est connue.
Nick Craver

6
Ou vous pouvez simplement taper ceci;
Eddie B

2
Je voulais aussi voir la valeur de la variable, alors j'ai utilisé:for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }
northern-bradley

75

Lorsque l'exécution du script est arrêtée (par exemple, sur un point d'arrêt), vous pouvez simplement afficher tous les globaux dans le volet droit de la fenêtre des outils de développement:

chrome-globals


2
puis-je cracher les vars à partir d'un contexte d'exécution, comme un spectacle de points d'arrêt, sans m'arrêter?
Mild Fuzz

1
@MildFuzz Ensuite, utilisez la solution de Nick Craver (celle acceptée).
Marcel Korpel

62

Ouvrez la console puis entrez:

  • keys(window) pour voir les variables
  • dir(window) voir des objets

dir(Function("return this")())le fait aussi fonctionner dans Web Workers
Janus Troelsen

2
FYI dir(window)ne fonctionne pas dans Firefox (oui je sais que ce fil était sur Chrome), mais key(window)fonctionne dans Firefox
Craig London

38

L' windowobjet contient toutes les variables publiques, vous pouvez donc le taper dans la console, puis le développer pour afficher toutes les variables / attributs / fonctions.

chrome-show-all-variables-expand-window-object


4
Agréable! De loin le moyen le plus simple car vous pouvez développer de manière récursive des variables.
qwertzguy

31

Si vous souhaitez exclure toutes les propriétés standard de l'objet fenêtre et afficher les globaux spécifiques à l'application, cela les imprimera sur la console Chrome:

(function(){var standardGlobals=["top","window","location","external","chrome","document","inlineCSS","target","width","height","canvas","data","DOMURL","img","svg","ctx","url","w","a","speechSynthesis","webkitNotifications","localStorage","sessionStorage","applicationCache","webkitStorageInfo","indexedDB","webkitIndexedDB","crypto","CSS","performance","console","devicePixelRatio","styleMedia","parent","opener","frames","self","defaultstatus","defaultStatus","status","name","length","closed","pageYOffset","pageXOffset","scrollY","scrollX","screenTop","screenLeft","screenY","screenX","innerWidth","innerHeight","outerWidth","outerHeight","offscreenBuffering","frameElement","clientInformation","navigator","toolbar","statusbar","scrollbars","personalbar","menubar","locationbar","history","screen","postMessage","close","blur","focus","ondeviceorientation","ondevicemotion","onunload","onstorage","onresize","onpopstate","onpageshow","onpagehide","ononline","onoffline","onmessage","onhashchange","onbeforeunload","onwaiting","onvolumechange","ontimeupdate","onsuspend","onsubmit","onstalled","onshow","onselect","onseeking","onseeked","onscroll","onreset","onratechange","onprogress","onplaying","onplay","onpause","onmousewheel","onmouseup","onmouseover","onmouseout","onmousemove","onmouseleave","onmouseenter","onmousedown","onloadstart","onloadedmetadata","onloadeddata","onload","onkeyup","onkeypress","onkeydown","oninvalid","oninput","onfocus","onerror","onended","onemptied","ondurationchange","ondrop","ondragstart","ondragover","ondragleave","ondragenter","ondragend","ondrag","ondblclick","oncuechange","oncontextmenu","onclose","onclick","onchange","oncanplaythrough","oncanplay","oncancel","onblur","onabort","onwheel","onwebkittransitionend","onwebkitanimationstart","onwebkitanimationiteration","onwebkitanimationend","ontransitionend","onsearch","getSelection","print","stop","open","showModalDialog","alert","confirm","prompt","find","scrollBy","scrollTo","scroll","moveBy","moveTo","resizeBy","resizeTo","matchMedia","requestAnimationFrame","cancelAnimationFrame","webkitRequestAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","captureEvents","releaseEvents","atob","btoa","setTimeout","clearTimeout","setInterval","clearInterval","TEMPORARY","PERSISTENT","getComputedStyle","getMatchedCSSRules","webkitConvertPointFromPageToNode","webkitConvertPointFromNodeToPage","webkitRequestFileSystem","webkitResolveLocalFileSystemURL","openDatabase","addEventListener","removeEventListener","dispatchEvent"];
    var appSpecificGlobals={};
    for (var w in window){
        if (standardGlobals.indexOf(w)==-1) appSpecificGlobals[w]=window[w];
    }
    console.log(appSpecificGlobals);})()

Le script fonctionne bien comme un bookmarklet. Pour utiliser le script comme bookmarklet, créez un nouveau signet et remplacez l'URL par ce qui suit:

javascript:(function(){var standardGlobals=["top","window","location","external","chrome","document","inlineCSS","target","width","height","canvas","data","DOMURL","img","svg","ctx","url","w","a","speechSynthesis","webkitNotifications","localStorage","sessionStorage","applicationCache","webkitStorageInfo","indexedDB","webkitIndexedDB","crypto","CSS","performance","console","devicePixelRatio","styleMedia","parent","opener","frames","self","defaultstatus","defaultStatus","status","name","length","closed","pageYOffset","pageXOffset","scrollY","scrollX","screenTop","screenLeft","screenY","screenX","innerWidth","innerHeight","outerWidth","outerHeight","offscreenBuffering","frameElement","clientInformation","navigator","toolbar","statusbar","scrollbars","personalbar","menubar","locationbar","history","screen","postMessage","close","blur","focus","ondeviceorientation","ondevicemotion","onunload","onstorage","onresize","onpopstate","onpageshow","onpagehide","ononline","onoffline","onmessage","onhashchange","onbeforeunload","onwaiting","onvolumechange","ontimeupdate","onsuspend","onsubmit","onstalled","onshow","onselect","onseeking","onseeked","onscroll","onreset","onratechange","onprogress","onplaying","onplay","onpause","onmousewheel","onmouseup","onmouseover","onmouseout","onmousemove","onmouseleave","onmouseenter","onmousedown","onloadstart","onloadedmetadata","onloadeddata","onload","onkeyup","onkeypress","onkeydown","oninvalid","oninput","onfocus","onerror","onended","onemptied","ondurationchange","ondrop","ondragstart","ondragover","ondragleave","ondragenter","ondragend","ondrag","ondblclick","oncuechange","oncontextmenu","onclose","onclick","onchange","oncanplaythrough","oncanplay","oncancel","onblur","onabort","onwheel","onwebkittransitionend","onwebkitanimationstart","onwebkitanimationiteration","onwebkitanimationend","ontransitionend","onsearch","getSelection","print","stop","open","showModalDialog","alert","confirm","prompt","find","scrollBy","scrollTo","scroll","moveBy","moveTo","resizeBy","resizeTo","matchMedia","requestAnimationFrame","cancelAnimationFrame","webkitRequestAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","captureEvents","releaseEvents","atob","btoa","setTimeout","clearTimeout","setInterval","clearInterval","TEMPORARY","PERSISTENT","getComputedStyle","getMatchedCSSRules","webkitConvertPointFromPageToNode","webkitConvertPointFromNodeToPage","webkitRequestFileSystem","webkitResolveLocalFileSystemURL","openDatabase","addEventListener","removeEventListener","dispatchEvent"]; var $appSpecificGlobals={};for (var w in window){if (standardGlobals.indexOf(w)==-1) $appSpecificGlobals[w]=window[w];} window.$appSpecificGlobals=$appSpecificGlobals;console.log(window.$appSpecificGlobals);})()

2
Voici une liste des globaux par défaut actuels de Chrome et Firefox: pastebin.com/wNj3kfg0
redaxmedia

9

David Walsh a une bonne solution pour cela. Voici mon point de vue à ce sujet, combinant sa solution avec ce qui a également été découvert sur ce fil.

https://davidwalsh.name/global-variables-javascript

x = {};
var iframe = document.createElement('iframe');
iframe.onload = function() {
    var standardGlobals = Object.keys(iframe.contentWindow);
    for(var b in window) { 
      const prop = window[b];
      if(window.hasOwnProperty(b) && prop && !prop.toString().includes('native code') && !standardGlobals.includes(b)) {
        x[b] = prop;
      }
    }
    console.log(x)
};
iframe.src = 'about:blank';
document.body.appendChild(iframe);

x a maintenant seulement les globaux.


1
prop.toStringsemble ne pas exister partout, donc la situation pourrait être plus défensiveif(window.hasOwnProperty(b) && prop && (prop.toString && !prop.toString().includes('native code')) && !standardGlobals.includes(b))
yves amsellem

6

Tapez l'instruction suivante dans la console javascript:

debugger

Vous pouvez maintenant inspecter la portée globale à l'aide des outils de débogage normaux.

Pour être honnête, vous obtiendrez tout dans la windowportée, y compris les navigateurs intégrés, il pourrait donc s'agir d'une expérience d'aiguille dans une botte de foin. : /


4

Vous voudrez peut-être essayer cette extension Firebug lite pour Chrome.


3
Bien que cela ait l'air bien, cette solution semble un peu utiliser un canon pour me tuer un moustique.
Marcel Korpel

Peut être. C'est la seule chose que j'ai trouvée qui montre des objets / fonctions / etc. la façon dont Firebug dans FF fait (sous l'onglet DOM dans l'extension). C'est un peu lent cependant.
KooiInc

1
Depuis le 17 mai, votre lien est rompu. Est-ce la même chose? getfirebug.com/releases/lite/chrome
Ian Hunter

@beanland 7: oui, corrigé dans la réponse, thnx pour l'avertissement
KooiInc

4

Pour afficher une variable dans Chrome, allez dans "Sources", puis "Regarder" et ajoutez-la. Si vous ajoutez ici la variable "window", vous pouvez la développer et l'explorer.


4

Méthode mise à jour du même article mentionné par Avindra - injecte iframe et compare ses contentWindowpropriétés aux propriétés de fenêtre globales.

(function() {
  var iframe = document.createElement('iframe');
  iframe.onload = function() {
    var iframeKeys = Object.keys(iframe.contentWindow);
    Object.keys(window).forEach(function(key) {
      if(!(iframeKeys.indexOf(key) > -1)) {
        console.log(key);
      }
    });
  };
  iframe.src = 'about:blank';
  document.body.appendChild(iframe);
})();


2

Type: this dans la console,

pour obtenir le window objectje pense (?), je pense que c'est essentiellement la même chose que la frappewindow dans la console.

Cela fonctionne au moins dans Firefox et Chrome.


1

Comme toutes les "variables publiques" sont en fait des propriétés de l'objet fenêtre (de la fenêtre / onglet que vous regardez), vous pouvez simplement inspecter l'objet "fenêtre" à la place. Si vous avez plusieurs cadres, vous devrez de toute façon sélectionner l'objet fenêtre correct (comme dans Firebug).



0

Lister la variable et ses valeurs

for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }

entrez la description de l'image ici

Afficher la valeur d'un objet variable particulier

console.log(JSON.stringify(content_of_some_variable_object))

entrez la description de l'image ici

Sources: commentaire de @ northern-bradley et réponse de @ nick-craver


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.