Xem danh sách tất cả các biến JavaScript trong Bảng điều khiển Google Chrome


236

Trong Fireorms, 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á.

Có cách nào - hoặc ít nhất là một lệnh - để 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 gõ.

Câu trả lời:


330

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

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

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

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

window

Điều này sẽ cung cấp cho bạn DOMWindow, một đối tượng có thể mở rộng / khám phá.


4
@ntownsend - Bảng điều khiển của tôi không đồng ý với bạn :) Đó là một tài sản củaobject , tại sao nó không có nó?
Nick Craver

9
"tại sao nó không có nó?" Các [[Prototype]]tài sản nội bộ của đối tượng toàn cầu là thực hiện phụ thuộc , ở hầu hết các triển khai lớn -V8, SpiderMonkey, Rhino, etc-, các kế thừa đối tượng toàn cầu tại một số điểm từ Object.prototype, nhưng ví dụ trong việc triển khai khác -JScript, BESEN, DMDScript vv ..- nó window.hasOwnPropertykhông tồn tại , vì vậy không tồn tại, để kiểm tra nó, chúng ta có thể:Object.prototype.isPrototypeOf(window);
CMS

10
@CMS - Có, đó là sự thật ... nhưng câu hỏi cụ thể là về Chrome, vì vậy việc triển khai được biết đến.
Nick Craver

6
Hoặc bạn chỉ có thể gõ này;
Eddie B

2
Tôi cũng muốn xem giá trị của biến nên tôi đã sử dụng:for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }
bắc-bradley

75

Khi việc thực thi tập lệnh bị tạm dừng (ví dụ: trên một điểm dừng), bạn có thể chỉ cần xem tất cả các phần tử trong khung bên phải của cửa sổ Công cụ dành cho nhà phát triển:

chrome-toàn cầu


2
Tôi có thể nhổ ra các vars từ bối cảnh thực hiện, như một chương trình điểm dừng, mà không dừng lại không?
Fuzz nhẹ

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

61

Mở bàn điều khiển và sau đó nhập:

  • keys(window) để xem các biến
  • dir(window) để xem đồ vật

dir(Function("return this")())làm cho nó hoạt động trong Công nhân web quá
Janus Troelsen

2
FYI dir(window)không hoạt động trong Firefox (vâng tôi biết chủ đề này là về Chrome), nhưng key(window)hoạt động trong Firefox
Craig London

38

Đối windowtượng chứa tất cả các biến công khai, vì vậy bạn có thể nhập nó vào bàn đ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-biến-bung rộng-window-object


4
Đẹp! Cho đến nay cách dễ nhất vì bạn có thể mở rộng đệ quy các biến.
qwertzguy

31

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

Kịch bản hoạt động tốt như một bookmarklet. Để sử dụng tập lệnh dưới dạng bookmarklet, hãy tạo một dấu trang mới và thay thế URL bằng cách 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 toàn cầu mặc định của Chrome và Firefox hiện tại: pastebin.com/wNj3kfg0
redaxmedia

9

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

https://davidwalsh.name/global-variabled-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 bây giờ chỉ có toàn cầu.


1
prop.toStringdường như không tồn tại ở mọi nơi, vì vậy điều kiện có thể phòng thủ nhiều hơnif(window.hasOwnProperty(b) && prop && (prop.toString && !prop.toString().includes('native code')) && !standardGlobals.includes(b))
yves amsellem

6

Nhập câu lệnh sau trong bảng điều khiển javascript:

debugger

Bây giờ bạn có thể kiểm tra phạm vi toàn cầu bằng cách sử dụng các công cụ gỡ lỗi thông thường.

Công bằng mà nói, bạn sẽ có được mọi thứ trong windowphạm vi, bao gồm cả trình duyệt được tích hợp sẵn, do đó, đây có thể là một trải nghiệm kim chỉ nam. : /


4

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


3
Mặc dù nó trông rất đẹp, nhưng giải pháp này nghe có vẻ hơi sử dụng súng thần công để giết muỗi.
Marcel Korpel

Có lẽ. Đó là điều duy nhất tôi thấy rằng hiển thị các đối tượng / hàm / vv. cách firebird trong FF thực hiện (dưới tab DOM trong phần mở rộng). Mặc dù nó hơi chậm.
KooiInc

1
Kể từ ngày 17 tháng 5, liên kết của bạn bị hỏng. Cái này có giống nhau không? getfireorms.com/release/lite/chrom
Ian Hunter

@beanland 7: vâng, đã sửa nó trong câu trả lời, thnx để cảnh báo
KooiInc

4

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


4

Phương pháp cập nhật từ cùng một bài viết Avindra đã đề cập - tiêm iframe và so sánh các contentWindowthuộc tính của nó với các thuộc tính cửa sổ toàn cầu.

(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

Nhập: thistrong bảng điều khiển,

để hiểu ý window objecttôi (?), tôi nghĩ về cơ bản nó giống như gõ windowvào bảng điều khiển.

Nó hoạt động ít nhất trong Firefox & chrome.


1

Vì tất cả các "biến công khai" trên thực tế là thuộc tính của đối tượng cửa sổ (của cửa sổ / tab bạn đang xem), bạn chỉ có thể kiểm tra đối tượng "cửa sổ". Nếu bạn có nhiều khung hình, bạn sẽ phải chọn đúng đối tượng cửa sổ (như trong Fireorms).



0

Liệt kê biến và giá trị của chúng

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

nhập mô tả hình ảnh ở đây

Hiển thị giá trị của một đối tượng biến cụ thể

console.log(JSON.stringify(content_of_some_variable_object))

nhập mô tả hình ảnh ở đây

Nguồn: nhận xét từ @ south-bradley và trả lời từ @ nick-craver


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.