Visualizza l'elenco di tutte le variabili JavaScript in Google Chrome Console


237

In Firebug, la scheda DOM mostra un elenco di tutte le variabili e gli oggetti pubblici. Nella console di Chrome devi digitare il nome della variabile pubblica o dell'oggetto che desideri esplorare.

C'è un modo - o almeno un comando - per la console di Chrome di visualizzare un elenco di tutte le variabili e gli oggetti pubblici? Salverà molta digitazione.

Risposte:


330

È questo il tipo di output che stai cercando?

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

Questo elencherà tutto ciò che è disponibile windowsull'oggetto (tutte le funzioni e le variabili, ad esempio, $e jQueryin questa pagina, ecc.). Tuttavia, questo è piuttosto un elenco; non sono sicuro di quanto sia utile ...

Altrimenti fai semplicemente windowe inizia a scendere dal suo albero:

window

Questo ti darà DOMWindowun oggetto espandibile / esplorabile.


4
@ntownsend -La mia console non è d'accordo con te :) È una proprietà diobject , perché non dovrebbe averlo?
Nick Craver

9
"perché non dovrebbe averlo?" La [[Prototype]]proprietà interna dell'oggetto globale dipende dall'implementazione , in quasi tutte le principali implementazioni -V8, Spidermonkey, Rhino, ecc., L'oggetto globale eredita ad un certo punto da Object.prototype, ma per esempio in altre implementazioni -JScript, BESEN, DMDScript, ecc. ..- non esiste, quindi window.hasOwnPropertynon esiste, per testarlo possiamo:Object.prototype.isPrototypeOf(window);
CMS

10
@CMS - Sì, è vero ... ma la domanda riguarda specificamente Chrome, quindi l'implementazione è nota.
Nick Craver

6
O potresti semplicemente scrivere questo;
Eddie B,

2
Volevo vedere anche il valore della variabile, quindi ho usato:for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }
bradley settentrionale

75

Quando l'esecuzione dello script viene interrotta (ad esempio, su un punto di interruzione) è possibile visualizzare semplicemente tutti i globi nel riquadro destro della finestra Strumenti di sviluppo:

cromo-global


2
posso sputare i var da un contesto di esecuzione, come uno spettacolo di break point, senza fermarmi?
Lieve Fuzz,

1
@MildFuzz Quindi usa la soluzione di Nick Craver (quella accettata).
Marcel Korpel,

62

Apri la console e inserisci:

  • keys(window) per vedere le variabili
  • dir(window) per vedere gli oggetti

dir(Function("return this")())lo fa funzionare anche su Web Workers
Janus Troelsen,

2
FYI dir(window)non funziona in Firefox (sì, so che questa discussione riguardava Chrome), ma key(window)funziona in Firefox
Craig London,

38

L' windowoggetto contiene tutte le variabili pubbliche, quindi puoi scriverlo nella console e quindi espanderlo per visualizzare tutte le variabili / attributi / funzioni.

cromo-show-tutte-le variabili-expand-window-oggetto


4
Bello! Di gran lunga il modo più semplice in quanto è possibile espandere ricorsivamente le variabili.
qwertzguy,

31

Se desideri escludere tutte le proprietà standard dell'oggetto finestra e visualizzare i globi specifici dell'applicazione, questo li stamperà sulla console di 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);})()

Lo script funziona bene come bookmarklet. Per utilizzare lo script come bookmarklet, creare un nuovo segnalibro e sostituire l'URL con il seguente:

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
Questo è un elenco degli attuali
globi

9

David Walsh ha una buona soluzione per questo. Ecco la mia opinione su questo, combinando la sua soluzione con ciò che è stato scoperto anche su questo thread.

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 ora ha solo i globi.


1
prop.toStringsembra non esistere ovunque, quindi la condizione potrebbe essere più difensivaif(window.hasOwnProperty(b) && prop && (prop.toString && !prop.toString().includes('native code')) && !standardGlobals.includes(b))
yves amsellem il

6

Digita la seguente istruzione nella console javascript:

debugger

Ora puoi controllare l'ambito globale usando i normali strumenti di debug.

Per essere onesti, si otterrà tutto ciò che nel windowcampo di applicazione, compreso il browser built-in, quindi potrebbe essere una sorta di esperienza ago-in-a-pagliaio. : /


4

Potresti provare questa estensione Firebug Lite per Chrome.


3
Anche se sembra carino, questa soluzione sembra un po 'usare un cannone per uccidermi una zanzara.
Marcel Korpel,

Può essere. È l'unica cosa che ho trovato che mostra oggetti / funzioni / ecc. come fa firebug in FF (sotto la scheda DOM nell'estensione). È un po 'lento però.
KooiInc,

1
A partire dal 17 maggio, il tuo collegamento è interrotto. È lo stesso? getfirebug.com/releases/lite/chrome
Ian Hunter,

@beanland 7: sì, risolto nella risposta, grazie per avvertimento
KooiInc

4

Per visualizzare qualsiasi variabile in Chrome, vai su "Sorgenti", quindi su "Guarda" e aggiungilo. Se aggiungi qui la variabile "finestra", puoi espanderla ed esplorare.


4

Metodo aggiornato dallo stesso articolo menzionato da Avindra: inietta iframe e confronta le sue contentWindowproprietà con le proprietà globali della finestra.

(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

Digitare: thisnella console,

per ottenere il window objectpenso (?), penso che sia sostanzialmente lo stesso che digitare windowla console.

Funziona almeno in Firefox e Chrome.


1

Dato che tutte le "variabili pubbliche" sono in realtà proprietà dell'oggetto finestra (della finestra / scheda che stai guardando), puoi semplicemente ispezionare l'oggetto "finestra". Se hai più frame, dovrai comunque selezionare l'oggetto finestra corretto (come in Firebug).



0

Elencare la variabile e i loro valori

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

inserisci qui la descrizione dell'immagine

Visualizza il valore di un particolare oggetto variabile

console.log(JSON.stringify(content_of_some_variable_object))

inserisci qui la descrizione dell'immagine

Fonti: commento di @ northern-bradley e risposta di @ nick-craver


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.