2010-05-29 44 views
178

Trong Firebug, tab DOM hiển thị danh sách tất cả các biến và đối tượng công khai của bạn. Trong bảng điều khiển của Chrome, bạn phải nhập tên của biến công khai hoặc đối tượng bạn muốn khám phá.Xem danh sách tất cả các biến JavaScript trong Bảng điều khiển Google Chrome

Có cách nào - hoặc ít nhất một lệnh - cho bảng điều khiển của Chrome hiển thị danh sách tất cả các biến và đối tượng công khai không? Nó sẽ tiết kiệm rất nhiều đánh máy.

Trả lời

241

Đây có phải là loại đầu ra bạn đang tìm kiếm không?

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

này sẽ liệt kê tất cả những gì có sẵn trên window đối tượng (tất cả các chức năng và các biến, ví dụ $jQuery trên trang này, vv). Mặc dù, đây là một danh sách khá, không chắc chắn cách hữu ích, nó là ...

Nếu không chỉ làm window và bắt đầu đi xuống cây của nó:

window 

này sẽ cung cấp cho bạn DOMWindow, một/đối tượng explorable mở rộng .

+0

DOMWindow không có phương thức 'hasOwnProperty'. – ntownsend

+3

@ntownsend -Bảng điều khiển của tôi không đồng ý với bạn :) [Đó là thuộc tính của 'đối tượng'] (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty), tại sao nó không có nó? –

+0

@Nick Craver - Rút tiền. Khi tôi đăng bình luận ở trên, tôi đã làm một thử nghiệm trong giao diện điều khiển của tôi cho thấy 'cửa sổ' không có phương thức' hasOwnProperty'. Thật vậy, tại thời điểm đó, nó đã không. Tôi vừa kiểm tra lại, sau khi đọc câu trả lời của bạn, và giao diện điều khiển của tôi bây giờ đồng ý rằng 'window' có một phương thức như vậy. Bí ẩn. – ntownsend

32

Đối tượng window chứa tất cả các biến công khai, vì vậy bạn có thể nhập nó trong bảng điều khiển và sau đó mở rộng để xem tất cả các biến/thuộc tính/hàm.

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

+1

Nice! Bởi cách dễ nhất kể từ khi bạn có thể mở rộng đệ quy các biến. – qwertzguy

1

Như "biến công cộng" đang tính thực tế của đối tượng cửa sổ (cửa sổ/tab mà bạn đang xem xét), bạn chỉ có thể kiểm tra việc "cửa sổ" đối tượng để thay thế. Nếu bạn có nhiều khung, bạn sẽ phải chọn đúng đối tượng cửa sổ (như trong Firebug).

4

Bạn có thể thử tiện ích mở rộng này Firebug lite dành cho Chrome.

+2

Mặc dù nó trông đẹp, giải pháp này nghe có vẻ hơi sử dụng một khẩu pháo để giết một con muỗi với tôi. –

+0

Có thể. Đó là điều duy nhất tôi tìm thấy cho thấy các đối tượng/chức năng/etc. cách firebug trong FF hiện (theo tab DOM trong phần mở rộng). Đó là một chút chậm mặc dù. – KooiInc

+1

Kể từ ngày 17 tháng 5, liên kết của bạn bị hỏng. Điều này có giống nhau không? http://getfirebug.com/releases/lite/chrome/ –

64

Khi thực hiện kịch bản phải dừng lại (ví dụ, trên một breakpoint) bạn chỉ có thể xem tất cả các globals trong khung bên phải của các công cụ phát triển cửa sổ:

chrome-globals

+1

tôi có thể nhổ ra các vars từ một bối cảnh thực thi, giống như một chương trình điểm ngắt, mà không dừng lại ? –

+0

@MildFuzz Sau đó, sử dụng giải pháp của Nick Craver (giải pháp được chấp nhận). –

44

mở giao diện điều khiển và sau đó nhập:

  • keys(window) để xem các biến
  • dir(window) để xem đối tượng
+0

'dir (Hàm (" trả về này ")())' làm cho nó hoạt động trong Web Worker quá –

+1

FYI '' 'dir (window)' '' không hoạt động trong Firefox (vâng tôi biết chủ đề này là về Chrome) , nhưng '' 'khóa (cửa sổ)' '' không hoạt động trong Firefox –

26

Nếu bạn muốn loại trừ tất cả các thuộc tính chuẩn của đối tượng cửa sổ và xem globals ứng dụng cụ thể, điều này sẽ in chúng ra cửa sổ Console 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);})() 

Các tác phẩm kịch bản cũng như một bookmarklet. Để sử dụng tập lệnh làm dấu trang, hãy tạo dấu trang mới và thay thế URL bằng các thông tin sau:

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

Đây là danh sách các hình cầu mặc định hiện tại của Chrome và Firefox: http://pastebin.com/wNj3kfg0 – redaxmedia

6

David Walsh có giải pháp tốt cho việc này. Dưới đây là của tôi về điều này, kết hợp giải pháp của mình với những gì đã được phát hiện trên thread này là tốt.

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 hiện có chỉ globals.

3

Để xem bất kỳ biến nào trong chrome, hãy chuyển đến "Nguồn", sau đó "Xem" và thêm biến đó vào. Nếu bạn thêm biến "cửa sổ" ở đây thì bạn có thể mở rộng và khám phá.

3

Phương pháp được cập nhật từ cùng một article Avindra đã đề cập — chèn iframe và so sánh các thuộc tính cửa sổ toàn cầu của nó.

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

Các vấn đề liên quan