Google Chrome Konsolu'ndaki tüm JavaScript değişkenlerinin listesini görüntüleme


236

Firebug'da DOM sekmesi tüm genel değişkenlerinizin ve nesnelerinizin bir listesini gösterir. Chrome konsolunda, keşfetmek istediğiniz ortak değişkenin veya nesnenin adını yazmanız gerekir.

Chrome konsolunun tüm genel değişkenleri ve nesneleri bir liste görüntülemesinin bir yolu veya en azından bir komutu var mı? Yazmadan çok tasarruf edecek.

Yanıtlar:


330

Bu aradığınız çıktı mı?

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

Bu, windownesnede mevcut olan her şeyi listeleyecektir (tüm işlevler ve değişkenler, örn. $Ve jQuerybu sayfada vb.). Yine de, bu oldukça bir liste; ne kadar yararlı olduğundan emin değilim ...

Aksi takdirde sadece windowağaçtan aşağı inmeye başlayın:

window

Bu size DOMWindowgenişletilebilir / araştırılabilir bir nesne verecektir .


4
@ntownsend -Konsolum sizinle aynı fikirde değil :) Bu bir özellikobject , neden olmasın?
Nick Craver

9
"Neden olmasın ki?" [[Prototype]]Küresel nesnenin iç özelliktir uygulama bağımlı neredeyse tüm önemli işlerden -V8, Spidermonkey, Rhino, vb-dan bir noktada küresel nesne devralır içinde, Object.prototypeancak diğer uygulamalarda -JScript, BESEN, DMDScript örneğin, vb ..- yok, öyle değil, window.hasOwnPropertytest etmek için şunları yapabiliriz:Object.prototype.isPrototypeOf(window);
CMS

10
@CMS - Evet bu doğru ... ancak soru özellikle Chrome ile ilgili, bu yüzden uygulama biliniyor.
Nick Craver

6
Ya da sadece bunu yazabilirsiniz;
Eddie B

2
Ben de kullanılan değişkenin değerini görmek istedim:for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }
kuzey-bradley

75

Komut dosyası yürütmesi durdurulduğunda (örn. Bir kesme noktasında), tüm globalleri Geliştirici Araçları penceresinin sağ bölmesinde görüntüleyebilirsiniz:

krom globaller


2
durma olmadan bir kırılma noktası gösterisi gibi bir yürütme bağlamından vars tükürebilir miyim?
Hafif Fuzz

1
@MildFuzz Sonra Nick Craver'in çözümünü (kabul edilen) kullanın.
Marcel Korpel

61

Konsolu açın ve şunu girin:

  • keys(window) değişkenleri görmek
  • dir(window) nesneleri görmek

dir(Function("return this")())Web Çalışanlarında da işe
yarar

2
FYI dir(window)Firefox'ta çalışmıyor (evet, bu konunun Chrome ile ilgili olduğunu biliyorum), ancak key(window)Firefox'ta çalışıyor
Craig London

38

windowKonsolda yazın ve ardından tüm değişkenler / özelliklerini / işlevleri görüntülemek için genişletmek böylece nesne, tüm kamu değişkenler içeriyor.

krom-show-all-değişkenler-genişletmek-pencere-nesne


4
Güzel! Değişkenleri özyinelemeli olarak genişletebildiğiniz için en kolay yol.
qwertzguy

31

Pencere nesnesinin tüm standart özelliklerini hariç tutmak ve uygulamaya özgü globalleri görüntülemek istiyorsanız, bunlar Chrome konsoluna yazdırılır:

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

Komut dosyası bir yer işareti olarak iyi çalışır. Komut dosyasını yer işareti olarak kullanmak için yeni bir yer işareti oluşturun ve URL'yi aşağıdakiyle değiştirin:

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
Bu, mevcut Chrome ve Firefox varsayılan globallerinin bir listesidir: pastebin.com/wNj3kfg0
redaxmedia

9

David Walsh'un bunun için güzel bir çözümü var. İşte benim çözümüm, onun çözümünü de bu iş parçacığında keşfedilenle birleştiriyor.

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 şimdi sadece küreseller var.


1
prop.toStringher yerde var gibi görünmüyor, bu yüzden durum daha savunmacı olabilirif(window.hasOwnProperty(b) && prop && (prop.toString && !prop.toString().includes('native code')) && !standardGlobals.includes(b))
yves amsellem

6

Javascript konsoluna aşağıdaki ifadeyi yazın:

debugger

Artık normal hata ayıklama araçlarını kullanarak global kapsamı inceleyebilirsiniz.

Adil olmak gerekirse, elde edersiniz şeyi içinde windowbu bir çeşit iğne-in-a-samanlık deneyimi olabilir böylece, tarayıcı yerleşik ins dahil kapsamı. : /


4

Chrome için bu Firebug lite uzantısını denemek isteyebilirsiniz .


3
Güzel görünse de, bu çözüm bana bir sivrisinek öldürmek için bir top kullanmak gibi geliyor.
Marcel Korpel

Olabilir. Nesneleri / fonksiyonları / vb. Gösteren tek şey buldum. Firfug'un FF'de yaptığı gibi (uzantıdaki DOM sekmesinin altında). Yine de biraz yavaş.
KooiInc

1
17 Mayıs itibarıyla bağlantınız koptu. Bu aynı mı? getfirebug.com/releases/lite/chrome
Ian Hunter

@beanland 7: evet, cevabında sabit, uyarı için thnx
KooiInc

4

Chrome'da herhangi bir değişkeni görüntülemek için "Kaynaklar" a gidin ve ardından "İzleyin" ve ekleyin. Buraya "window" değişkenini eklerseniz, onu genişletebilir ve keşfedebilirsiniz.


4

Aynı makaleden güncellenen yöntem Avindra - iframe enjekte eder ve contentWindowözelliklerini global pencere özellikleriyle karşılaştırır.

(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

Tür: thiskonsolda,

window objectBence (?) almak için , bence bu windowkonsolda yazmakla aynı şey .

En azından Firefox & chrome'da çalışır.


1

Tüm "ortak değişkenler" aslında pencere nesnesinin (baktığınız pencere / sekmenin) özellikleri olduğundan, bunun yerine "pencere" nesnesini inceleyebilirsiniz. Birden fazla çerçeveniz varsa, yine de doğru pencere nesnesini (Firebug'daki gibi) seçmeniz gerekecektir.



0

Değişkeni ve değerlerini listeleyin

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

resim açıklamasını buraya girin

Belirli bir değişken nesnenin değerini görüntüleme

console.log(JSON.stringify(content_of_some_variable_object))

resim açıklamasını buraya girin

Kaynaklar: @ northern-bradley'den yorum ve @ nick-craver'dan cevap


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.