ดูรายการตัวแปร JavaScript ทั้งหมดใน Google Chrome Console


236

ใน Firebug แท็บ DOM จะแสดงรายการตัวแปรสาธารณะและวัตถุทั้งหมดของคุณ ในคอนโซลของ Chrome คุณต้องพิมพ์ชื่อของตัวแปรสาธารณะหรือวัตถุที่คุณต้องการสำรวจ

มีวิธี - หรืออย่างน้อยคำสั่ง - เพื่อให้คอนโซลของ Chrome แสดงรายการตัวแปรสาธารณะและวัตถุทั้งหมดหรือไม่ มันจะประหยัดการพิมพ์จำนวนมาก

คำตอบ:


330

นี่คือผลลัพธ์ที่คุณต้องการหรือไม่

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

สิ่งนี้จะแสดงรายการทุกอย่างที่มีในwindowวัตถุ (ฟังก์ชั่นและตัวแปรทั้งหมดเช่น$และjQueryในหน้านี้เป็นต้น) แม้ว่านี่จะเป็นรายการ ไม่แน่ใจว่ามันมีประโยชน์อย่างไร ...

มิฉะนั้นเพียงทำwindowและเริ่มลงต้นไม้:

window

สิ่งนี้จะทำให้คุณDOMWindowเป็นวัตถุที่ขยาย / อธิบายได้


4
@ntownsend - คอนโซลของฉันไม่เห็นด้วยกับคุณ :) มันเป็นคุณสมบัติของobjectทำไมมันไม่ได้หรือไม่
Nick Craver

9
"ทำไมมันไม่มี?" [[Prototype]]คุณสมบัติภายในของวัตถุทั่วโลกคือการดำเนินการขึ้นอยู่ในเกือบทุกการใช้งานที่สำคัญ -V8, Spidermonkey แรด etc- ที่สืบทอดวัตถุทั่วโลกในบางจุดจากObject.prototypeแต่สำหรับตัวอย่างเช่นในการใช้งานอื่น ๆ -JScript, Besen, DMDScript ฯลฯ ..- มันไม่มีดังนั้นwindow.hasOwnPropertyไม่มีอยู่เพื่อทดสอบเราทำได้:Object.prototype.isPrototypeOf(window);
CMS

10
@CMS - ใช่จริง ... แต่คำถามนี้เกี่ยวกับ Chrome โดยเฉพาะดังนั้นการใช้งานจึงเป็นที่รู้จัก
Nick Craver

6
หรือคุณพิมพ์นี่ได้
Eddie B

2
ฉันต้องการเห็นคุณค่าของตัวแปรเช่นกันดังนั้นฉันจึงใช้:for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }
north-bradley

75

เมื่อหยุดการทำงานของสคริปต์ (เช่นบนเบรกพอยต์) คุณสามารถดูกลมทั้งหมดในบานหน้าต่างด้านขวาของหน้าต่างเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์:

โครเมี่ยม Globals


2
ฉันจะคาย vars ออกจากบริบทการดำเนินการเช่นการแสดงจุดหยุดโดยไม่หยุดพักได้หรือไม่
Mild Fuzz

1
@MildFuzz จากนั้นใช้โซลูชันของ Nick Craver (อันที่ยอมรับ)
Marcel Korpel

61

เปิดคอนโซลแล้วป้อน:

  • keys(window) เพื่อดูตัวแปร
  • dir(window) เพื่อดูวัตถุ

dir(Function("return this")())ทำให้มันทำงานใน Web Workers ด้วย
Janus Troelsen

2
FYI dir(window)ไม่ทำงานใน Firefox (ใช่ฉันรู้ว่ากระทู้นี้เกี่ยวกับ Chrome) แต่key(window)ทำงานใน Firefox
Craig London

38

windowวัตถุที่มีทุกตัวแปรสาธารณะเพื่อให้คุณสามารถพิมพ์ในคอนโซลแล้วขยายเพื่อดูตัวแปรทั้งหมด / คุณลักษณะ / ฟังก์ชั่น

โครเมี่ยมแสดงทุกตัวแปรขยายหน้าต่างวัตถุ


4
ดี! โดยวิธีที่ง่ายที่สุดเนื่องจากคุณสามารถขยายตัวแปรแบบวนซ้ำได้
qwertzguy

31

หากคุณต้องการยกเว้นคุณสมบัติมาตรฐานทั้งหมดของวัตถุหน้าต่างและดูรูปกลมเฉพาะแอปพลิเคชันสิ่งนี้จะพิมพ์ลงในคอนโซล 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);})()

สคริปต์ทำงานได้ดีเช่นเดียวกับ bookmarklet หากต้องการใช้สคริปต์เป็น bookmarklet ให้สร้างบุ๊กมาร์กใหม่และแทนที่ URL ด้วยรายการต่อไปนี้:

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
นี่คือรายการของ globals เริ่มต้นปัจจุบันของ Chrome และ Firefox: pastebin.com/wNj3kfg0
redaxmedia

9

David Walsh มีทางออกที่ดีสำหรับเรื่องนี้ นี่คือสิ่งที่ฉันใช้ในการรวมโซลูชั่นของเขากับสิ่งที่ถูกค้นพบในหัวข้อนี้เช่นกัน

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 ตอนนี้มีรูปดาวเท่านั้น


1
prop.toStringดูเหมือนว่าไม่มีอยู่ทุกหนทุกแห่งดังนั้นเงื่อนไขอาจจะป้องกันได้มากกว่านี้if(window.hasOwnProperty(b) && prop && (prop.toString && !prop.toString().includes('native code')) && !standardGlobals.includes(b))
yves amsellem

6

พิมพ์คำสั่งต่อไปนี้ในคอนโซล javascript:

debugger

ตอนนี้คุณสามารถตรวจสอบขอบเขตโกลบอลโดยใช้เครื่องมือดีบักปกติ

เพื่อความเป็นธรรมคุณจะได้รับทุกสิ่งในwindowขอบเขตรวมถึงเบราว์เซอร์ในตัวดังนั้นจึงอาจเป็นประสบการณ์แบบเข็มในกองหญ้าแห้ง : /


4

คุณอาจต้องการลองใช้Firebug lite extension สำหรับ Chrome


3
แม้ว่ามันจะดูดี แต่วิธีนี้ฟังดูคล้ายกับใช้ปืนใหญ่เพื่อฆ่ายุงให้ฉัน
Marcel Korpel

อาจจะ. มันเป็นสิ่งเดียวที่ฉันพบว่าแสดงวัตถุ / ฟังก์ชั่น / ฯลฯ วิธีที่ firebug ใน FF ทำได้ (ใต้แท็บ DOM ในส่วนขยาย) มันค่อนข้างช้าไปหน่อย
KooiInc

1
ตั้งแต่วันที่ 17 พฤษภาคมลิงค์ของคุณเสีย มันเหมือนกันหรือไม่ getfirebug.com/releases/lite/chrome
เอียนฮันเตอร์

@beanland 7: ใช่แก้ไขมันในคำตอบขอบคุณสำหรับคำเตือน
KooiInc

4

หากต้องการดูตัวแปรใด ๆ ในโครเมี่ยมให้ไปที่ "แหล่งที่มา" จากนั้น "ดู" และเพิ่มเข้าไป หากคุณเพิ่มตัวแปร "window" ที่นี่คุณสามารถขยายและสำรวจได้


4

วิธีการอัปเดตจากบทความเดียวกันที่กล่าวถึง Avindra - ฉีด iframe และเปรียบเทียบcontentWindowคุณสมบัติกับคุณสมบัติหน้าต่างสากล

(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

ประเภท: thisในคอนโซล

เพื่อให้ได้window objectฉันคิดว่า (?) ฉันคิดว่ามันเหมือนกับการพิมพ์windowในคอนโซล

มันทำงานได้อย่างน้อยใน Firefox & chrome


1

เนื่องจากตัวแปรสาธารณะทั้งหมดเป็นคุณสมบัติของวัตถุหน้าต่าง (ของหน้าต่าง / แท็บที่คุณกำลังดู) คุณสามารถตรวจสอบวัตถุ "หน้าต่าง" แทน หากคุณมีหลายเฟรมคุณจะต้องเลือกวัตถุหน้าต่างที่ถูกต้อง (เช่นใน Firebug) ต่อไป



0

รายการตัวแปรและค่าของพวกเขา

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

ป้อนคำอธิบายรูปภาพที่นี่

แสดงค่าของวัตถุตัวแปรเฉพาะ

console.log(JSON.stringify(content_of_some_variable_object))

ป้อนคำอธิบายรูปภาพที่นี่

แหล่งที่มา: ความคิดเห็นจาก @ north-bradley และคำตอบจาก @ nick-craver


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.