如何在 IE8 中转储 JavaScript 变量?

How do I dump JavaScript vars in IE8?

提问人:Pekka 提问时间:12/24/2009 最后编辑:Josh UngerPekka 更新时间:4/21/2017 访问量:43418

问:

我有一个对象需要在 IE8 中检查。 我尝试了开发人员工具,并尝试了它们的 Firebug 等效工具。 但是,当我将对象输出到日志时:console.log

console.log("Element: ", element);
console.log(element);

我只得到字符串

LOG: Element: [object Object]

而不是可点击的、可检查的转储。

是否可以像在 Firebug 中那样将对象转储到 Log 并检查其成员?

我不能使用自制的 dump() 函数,因为我想检查的元素太大了,浏览器会崩溃。

javascript internet-explorer-8 控制台 firebug 即开发人员工具

评论

12赞 Walf 4/6/2011
可悲的是,IE9 也做了同样的事情。诅咒你Microsoft!

答:

-1赞 RyanWilcox 12/24/2009 #1

console.log(element.toString()) 可能是你在这里的朋友......

评论

4赞 Pekka 12/28/2009
我认为这不值得投反对票——它工作得很好,只是不是我需要的方式。反对票应该保留给公然错误的答案。+1 将其扳平。
21赞 naivists 12/31/2009
.toString() 是解释器在尝试输出对象时调用的内容。所以基本上console.log(element)和console.log(element.tostring())是一样的
0赞 Curtis Yallop 1/17/2015
好吧,对于日期、函数和数组,它有效。例如,“new Date().toString()”, “new Date().toString.toString()”, “[0, 1, 2].toString()”(没有 .toString(),它显示“{...}”)(控制台 .log 不是必需的)
101赞 Xavi 12/27/2009 #2

以下是我发现有用的一种技术:

  • 打开开发人员工具栏(按 F12)
  • 转到“脚本”选项卡
  • 单击“开始调试”按钮
  • 接下来,在控制台中键入“debugger”并按回车键。这应该会触发断点。
  • 转到“观看”子选项卡
  • 点按显示“点击添加...”的行,然后输入要检查的变量。请注意,该变量必须全局可用。
  • 此时,您应该能够使用类似树的 UI 检查变量
  • 完成调试后,单击“继续”按钮(或按 F5)

评论

1赞 Pekka 12/28/2009
我现在没有时间讨论这个问题,但我很确定它会对我有所帮助。感谢您的分步指导。
16赞 alejandro 9/6/2013
我敢打赌 Microsoft 开发人员讨厌这个。
1赞 ColacX 2/2/2015
你可以编写调试器;直接进入 JS 代码。stackoverflow.com/questions/1306232/......
0赞 blamb 5/2/2015
它只是暴露对象的好方法,它是学习其他一些我通常不使用的东西的好方法
0赞 Sebastian 2/10/2016
@Xavi:您的图片网址已损坏。
93赞 Andy 12/31/2009 #3

有点偏离主题(因为它不适用于 DOM 元素),但我发现使用 JSON.stringify(object) 获取对象的 JSON 字符串非常方便,该字符串非常可读。

评论

4赞 daitangio 11/22/2010
这个解决方案是对这个问题的更好回答。顺便说一句,如果你的IE不支持JSON对象,你可以使用 JSON.org/json2.js 这是一个很好的后备
0赞 jrz 8/5/2011
请注意,如果您尝试将此技术用于非常大的变量,例如jQuery对象,您可能会遇到“错误:内存不足”。
52赞 Xavi 5/29/2012
PROTIP:用于使输出更具可读性。JSON.stringify(obj, null, "\t")stringify
15赞 Chris 10/18/2012
你也可以使用 console.dir();在 IE.
3赞 René 12/11/2012
@Chris 哇,很棒的提示!效果很好!我必须让其他人知道你的好提示,所以我用这些信息添加了一个答案。希望你没事。:-)
3赞 winladen 8/12/2011 #4

一个建议是使用 Firebug-Lite: 它包装了控制台 obj,您可以在 IE 中看到结果,就像在大多数 firebug 控制台中一样。 希望这有帮助。

评论

0赞 GuruM 9/19/2012
1) 如何在 IE 和其他浏览器上安装和使用 firebug-lite:makeuseof.com/tag/... 2) 关于如何规避 IE 中 firebug-lite 书签书签问题的视频: youtube.com/watch?v=vLJ2RaNZ22E
0赞 GuruM 9/21/2012
安装了firebug-lite,但是“控制台未定义”是我收到的错误消息。尝试在谷歌上搜索答案,但还没有运气。如果有人知道如何摆脱这个问题,请回复这里。
5赞 Cees Timmerman 8/2/2012 #5

如果您正在处理令人讨厌的代码并且控制台 .log 不可用,请在控制台中尝试以下操作:

out = []; for (i in your_object) { out.push(i) } out.join("\n")
13赞 René 12/11/2012 #6

@Chris用简单的解决方案评论了@Andy的答案:用于在IE的控制台中打印出所有详细信息。谢谢克里斯!console.dir(myObj)

评论

0赞 Chris 12/11/2012
是的,没关系,^^愚蠢到我没有发布答案。我以为这里有足够多的好东西。
12赞 erotte 12/11/2012
console.dir 在 IE8 :(中不可用
2赞 VJ. 1/21/2013
也。。console.dir 不进行深度序列化...JSON.stringify 可以
1赞 kayahr 9/3/2013
嗯......在 IE10 中仅输出 .在 IE 9 模式下,它可以工作。谢谢 Microsoft...console.dir(obj)"[object Object]"
0赞 Carnix 10/21/2013 #7

我知道这是一个非常古老的问题,但我刚才正在寻找这个问题的答案。如果使用 IE 控制台不是绝对要求(这不是很好,IMO),那么您可以考虑使用 Firebug Lite (http://getfirebug.com/firebuglite)。这不是一个完美的解决方案,你可能不想将该脚本推送到你的生产环境中,而且它不像 Firebug 那样功能齐全,但当你不得不使用像 IE 这样的低端浏览器时,它在紧要关头非常好。

评论

3赞 Joe 2/12/2014
如果IE不是必需的,那么就不会有问题。内置的 chrome/firefox 开发工具可以很好地做到这一点。
0赞 br4nnigan 8/16/2014 #8

有点笨重,但它适用于 DOM 对象:

 console.log( testNode.outerHTML.replace(testNode.innerHTML,"") ); 
1赞 Sharad 7/15/2016 #9

在您的页面中添加此标签:

<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>

事情会起作用的。

它在我的系统上运行。

注意:请尝试此解决方案。

0赞 dsuess 11/15/2016 #10

将其转储到现有的 HMTL 元素中

我注意到 IE 11 在 1027 个字符后剥离了控制台行:-/ 当我有一个大对象要转储(12,000 个字符)时,我将其转储到现有的 DIV- oder TextArea-Element 中,从那里我可以复制内容。

var str = JSON.stringify(myObject);
$('#existing-element').text(str); // jQuery or
document.querySelector("#existing-element").innerHTML = str; // native JavaScript
1赞 Frison Alexander 4/21/2017 #11

哈维出色回答的图片版本:

enter image description here