2010-05-29 9 views
178

In Firebug zeigt die Registerkarte DOM eine Liste aller öffentlichen Variablen und Objekte an. In der Chrome-Konsole müssen Sie den Namen der öffentlichen Variablen oder des Objekts eingeben, das Sie untersuchen möchten.Liste aller JavaScript-Variablen in Google Chrome Console anzeigen

Gibt es eine Möglichkeit - oder zumindest einen Befehl - für die Chrome-Konsole, eine Liste aller öffentlichen Variablen und Objekte anzuzeigen? Es spart viel Tipparbeit.

Antwort

241

Ist das die Art von Ausgabe, die Sie suchen?

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

Das wird alles auf das window Objekt (alle Funktionen und Variablen, zum Beispiel $ und jQuery auf dieser Seite, etc) auflisten. Obwohl, das ist eine ganz Liste, nicht sicher, wie nützlich es ist ...

Ansonsten tun nur window und starten Sie es den Baum hinunter:

window 

Dies werden Sie DOMWindow, ein erweiterbares/erforschbaren Objekt .

+0

DOMWindow hat keine 'hasOwnProperty' Methode. – ntownsend

+3

@ntownsend -Meine Konsole stimmt nicht mit dir überein :) [Es ist eine Eigenschaft von 'object'] (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty), warum hätte es nicht es? –

+0

@Nick Craver - Zurückgezogen. Als ich den obigen Kommentar gepostet habe, habe ich einen Test in meiner Konsole gemacht, der zeigte, dass 'window' keine' hasOwnProperty' Methode hatte. Zu dieser Zeit tat es das nicht. Ich habe es noch einmal überprüft, nachdem ich Ihre Antwort gelesen habe, und meine Konsole stimmt jetzt zu, dass 'window' eine solche Methode hat. Geheimnisvoll. – ntownsend

32

Das Objekt window enthält alle öffentlichen Variablen. Sie können es also in der Konsole eingeben und dann erweitern, um alle Variablen/Attribute/Funktionen anzuzeigen.

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

+1

Nice! Bei weitem der einfachste Weg, da Sie Variablen rekursiv erweitern können. – qwertzguy

1

Wie alle „öffentlichen Variablen“ sind in der Tat Eigenschaften des Window-Objekt (der Fenster/Tab Sie suchen), können Sie einfach das „Fenster“ inspizieren stattdessen widersprechen. Wenn Sie mehrere Frames haben, müssen Sie das richtige Fensterobjekt (wie in Firebug) sowieso auswählen.

4

Sie können diese Firebug lite Erweiterung für Chrome ausprobieren.

+2

Obwohl es gut aussieht, klingt diese Lösung ein wenig von der Verwendung einer Kanone, um eine Mücke für mich zu töten. –

+0

Vielleicht. Es ist das einzige, was ich gefunden habe, dass Objekte/Funktionen/etc. die Art und Weise, wie Firebug in FF funktioniert (unter dem DOM-Tab in der Erweiterung). Es ist allerdings ein bisschen langsam. – KooiInc

+1

Ab dem 17. Mai ist Ihre Verbindung unterbrochen. Ist das das Gleiche? http://getfirebug.com/releases/lite/chrome/ –

64

Wenn die Skriptausführung wird angehalten (zB auf einem Breakpoint) Sie können einfach alle Globals im rechten Bereich des Entwicklertools Fenster anzuzeigen:

chrome-globals

+1

kann ich die vars aus einem Ausführungskontext ausspucken, wie eine Unterbrechungspunktshow, ohne anzuhalten ? –

+0

@MildFuzz Verwenden Sie dann Nick Cravers Lösung (die akzeptierte). –

44

Öffnen Sie die Konsole und dann eingeben:

  • keys(window) Variablen sehen
  • dir(window) auf Objekte sehen
+0

'dir (Funktion (" return this ")()) macht es auch in Web Workers –

+1

FYI' '' dir (window) '' 'funktioniert nicht in Firefox (ja, ich weiß, dieser Thread war über Chrome) , aber '' 'Taste (Fenster)' '' funktioniert in Firefox –

26

Wenn Sie alle Standardeigenschaften der Fensterobjekt und Ansicht anwendungsspezifische Globals ausschließen wollen, dies wird sie in die Chrome-Konsole aus:

(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);})() 

Das Skript funktioniert gut als Bookmarklet. Um das Skript als Bookmarklet zu verwenden, um ein neues Lesezeichen erstellen und ersetzen Sie die URL mit dem folgenden:

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

Dies ist eine Liste der aktuellen Chrome und Firefox Standard-Globals: http://pastebin.com/wNj3kfg0 – redaxmedia

6

David Walsh hat eine schöne Lösung. Hier ist mein Ansatz, der seine Lösung mit dem kombiniert, was in diesem Thread ebenfalls entdeckt wurde.

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 hat jetzt nur noch die Globals.

3

Um eine Variable in Chrome anzuzeigen, gehen Sie zu "Quellen" und dann "Beobachten" und fügen Sie sie hinzu. Wenn Sie hier die Variable "window" hinzufügen, können Sie sie erweitern und erkunden.

3

Aktualisierte Methode von demselben article Avindra erwähnt — injiziert iframe und vergleicht seine contentWindow Eigenschaften zu globalen Fenstereigenschaften.

(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); 
 
})();

Verwandte Themen