查看Google Chrome控制台中所有JavaScript变量的列表

GRb*_*oss 225 javascript google-chrome google-chrome-devtools

在Firebug中,DOM选项卡显示所有公共变量和对象的列表.在Chrome的控制台中,您必须键入要浏览的公共变量或对象的名称.

有没有办法 - 或者至少是命令 - Chrome的控制台显示所有公共变量和对象的列表?它会节省很多打字.

Nic*_*ver 306

这是你要找的那种输出吗?

for(var b in window) { 
  if(window.hasOwnProperty(b)) console.log(b); 
}
Run Code Online (Sandbox Code Playgroud)

这将列出一切可用的window对象(所有的函数和变量,例如,$jQuery此页面上,等等).虽然,这是一个很清单; 不确定它有多大帮助......

否则就这样做,window然后开始走下树:

window
Run Code Online (Sandbox Code Playgroud)

这将为您DOMWindow提供可扩展/可探索的对象.

  • @CMS - 是的,这是真的...但问题是关于Chrome的,所以实现是众所周知的. (10认同)
  • "为什么不呢?" 全局对象的`[[Prototype]]`内部属性是*依赖于实现*,在几乎所有主要实现-V8,Spidermonkey,Rhino等中,全局对象在某些时候从`Object.prototype`继承,但是例如在其他实现中-JScript,BESEN,DMDScript等......它没有,所以`window.hasOwnProperty`不存在,为了测试我们可以:`Object.prototype.isPrototypeOf(window);` (9认同)
  • 或者你可以输入这个; (5认同)
  • @ntownsend-我的控制台不同意你的看法:) [这是`object`的属性](https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty),为什么它没有它? (3认同)
  • 我也想查看变量的值,所以我使用了:`for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }` (2认同)

Mar*_*pel 74

当脚本执行停止时(例如,在断点处),您只需在Developer Tools窗口的右窗格中查看所有全局变量:

铬全局

  • 我可以从执行环境中吐出变量,比如断点显示,而不会停止吗? (2认同)

小智 55

打开控制台,然后输入:

  • keys(window) 看变量
  • dir(window) 看对象

  • FYI```dir(窗口)```在Firefox中不起作用(是的,我知道这个主题是关于Chrome的),但```key(window)```在Firefox中有效 (2认同)

Fab*_*ger 37

window对象包含所有公共变量,因此您可以在控制台中键入它,然后展开以查看所有变量/属性/函数.

铬显示,所有变量展开窗口对象

  • 太好了!到目前为止,这是最简单的方法,因为您可以递归扩展变量. (3认同)

Max*_*ber 30

如果要排除窗口对象的所有标准属性并查看特定于应用程序的全局变量,则会将它们打印到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);})()
Run Code Online (Sandbox Code Playgroud)

该脚本可以很好地用作书签.要将脚本用作书签,请创建新书签并使用以下内容替换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);})()
Run Code Online (Sandbox Code Playgroud)

  • 这是当前Chrome和Firefox默认全局变量的列表:http://pastebin.com/wNj3kfg0 (2认同)

Avi*_*ran 8

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);
Run Code Online (Sandbox Code Playgroud)

x 现在只有全局变量.


Heb*_*ebe 8

我结束使用它进行调试:

for (aProperty in window) {
    try{
        console.log(aProperty +':'+JSON.stringify(window[aProperty]));
    }catch{}
}
Run Code Online (Sandbox Code Playgroud)

try用于避免TypeError: Converting circular structure to JSON
然后Save as...控制台输出到文件并进一步操作。


int*_*ika 7

列出变量及其值

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

在此输入图像描述

显示特定变量对象的值

console.log(JSON.stringify(content_of_some_variable_object))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

资料来源:@northern-bradley 的评论和 @nick-craver 的回答


小智 6

来自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);
})();
Run Code Online (Sandbox Code Playgroud)


tan*_*orm 6

在javascript控制台中输入以下语句:

debugger
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用常规调试工具检查全局范围。

说句公道话,你会得到一切window范围,包括浏览器的内置插件,所以它可能是某种针-IN-A-草垛体验。:/


Tig*_*ear 5

要在 chrome 中查看任何变量,请转到“Sources”,然后“Watch”并添加它。如果在此处添加“window”变量,则可以展开它并进行探索。


Seb*_*orr 5

输入:this在控制台中,

为了得到我认为(?),我认为它基本上与在控制台中window object输入相同。window

它至少可以在 Firefox 和 Chrome 中运行。