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.