如何在IE8中转储JavaScript变量?


71

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

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

我只有绳子

LOG: Element: [object Object]

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

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

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


12
可悲的是IE9也是如此。诅咒你微软!
沃尔夫2011年

Answers:


101

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

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

1
我现在没有时间讨论这个问题,但是我很确定它将对我有帮助。感谢您的逐步指导。
Pekka

16
我敢打赌微软开发人员讨厌这个。
alejandro

1
您可以编写调试器;直接进入js代码。stackoverflow.com/questions/1306232/…–
ColacX

它只是暴露对象的一种好方法,也是学习我通常不使用的其他东西的一种好方法
2015年

@Xavi:您的图片网址已损坏。
塞巴斯蒂安

93

话题有点离题(因为它不适用于DOM元素),但是我发现使用JSON.stringify(object)来获得易于阅读的JSON字符串很方便。


4
此解决方案是对该问题的更好回答。顺便说一句,如果您的IE不支持JSON对象,则可以使用JSON.org/json2.js,这是一个很好的备用
daitangio 2010年

只是要注意,如果您尝试将此技术用于很大的变量(例如jquery对象),则可能会遇到“错误:内存不足”。
乔恩·z

52
PROTIPJSON.stringify(obj, null, "\t")用于使输出stringify更具可读性。
哈维2012年

15
您还可以使用console.dir(); 以实现这种行为。
克里斯(Chris)

3
@克里斯哇,很好的提示!很棒!我必须让其他人知道您的提示,因此我在该信息中添加了答案。希望你没事。:-)
勒内·

13

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


是的,没关系^^很愚蠢,我没有发布答案。我以为这里有足够多的好人了。
克里斯

12
在IE8中,console.dir不可用:(
erotte

2
另外.. console.dir不会进行深度序列化... JSON.stringify可以
VJ。

1
嗯...在IE10中console.dir(obj)仅输出"[object Object]"。在IE 9模式下,它可以工作。谢谢微软...
kayahr

5

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

out = []; for (i in your_object) { out.push(i) } out.join("\n")

3

一种建议是使用Firebug-Lite:它包装控制台obj,您可以像大多数Firebug控制台一样在IE中查看结果。希望对您有所帮助。


1)如何安装和IE等浏览器使用萤火虫-精简版:makeuseof.com/tag/... 2)关于如何规避书签问题在IE萤火-精简版书签视频:youtube.com/watch?v=vLJ2RaNZ22E
GuruM 2012年

安装了firebug-lite,但是“控制台未定义”是我收到的错误消息。试图谷歌搜索答案,但还没有运气。如果有人知道如何解决这个问题,请在这里回覆。
GuruM 2012年

1

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

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

一切都会起作用。

它在我的系统上工作。

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



0

我知道这是一个非常老的问题,但是我刚才正在寻找答案。如果不是绝对要使用IE控制台(IMO不太好),那么您可以考虑使用Firebug Lite(http://getfirebug.com/firebuglite)。这不是一个完美的解决方案,您可能不希望将该脚本推送到您的生产环境中,并且功能不如Firebug强大,但是当您不得不使用诸如此类的低端浏览器时,这非常有用。 IE浏览器


3
如果不要求IE,就不会有问题。内置的chrome / firefox开发工具可以很好地完成此任务。
2014年

0

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

 console.log( testNode.outerHTML.replace(testNode.innerHTML,"") ); 

0

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

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

var str = JSON.stringify(myObject);
$('#existing-element').text(str); // jQuery or
document.querySelector("#existing-element").innerHTML = str; // native JavaScript

-1

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


4
我认为这不应该被否决-它工作得很好,只是不是我需要的方式。应保留公然的答案,以免公然回答错误。+1使其均匀。
佩卡

21
尝试输出对象时,解释器将调用.toString()。因此,基本上console.log(element)与console.log(element.tostring())相同
naivists

好吧,对于日期,函数和数组,它可以工作。例如“ new Date()。toString()”“ new Date()。toString.toString()”“ [0,1,2] .toString()”(不带.toString()则显示“ {... }“)(不需要console.log)
Curtis Yallop 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.