如何在IE8中转储JavaScriptvariables?

我有一个对象,我需要在IE8中检查。 我尝试了开发者工具和console.log ,他们的Firebug等价物。 但是,当我输出对象到日志:

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

我只得到string

 LOG: Element: [object Object] 

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

是否有可能将对象转储到日志并检查其成员,如在Firebug中?

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

这里有一个我发现有用的技术:

  • 打开开发工具栏(按F12)
  • 转到“脚本”选项卡
  • 点击“开始debugging”button
  • 接下来,input“debugging器”到控制台,然后按回车。 这应该引发一个断点。
  • 转到“观看”子选项卡
  • 点击表示“点击添加…”的行,然后input您想要查看的variables。 请注意,该variables必须是全局可用的。
  • 在这一点上,你应该能够检查你的variables与树状的用户界面
  • 一旦你完成debugging点击继续button(或点击F5)

有点closures的话题(因为它不会用于DOM元素),但我发现它使用JSON.stringify(对象 )得到一个JSONstring的对象是非常可读的。

@Chris评论@ Andy的答案简单的解决scheme:使用console.dir(myObj)获取IE中控制台打印的所有细节。 谢谢Chris!

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

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

一个build议是使用Firebug Lite :它包装控制台obj,你可以看到在IE中的结果,就像在大多数的萤火虫控制台。 希望这个帮助。

在你的页面添加这个标签:

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

哈维的优秀答案的图片版本:

在这里输入图像说明

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

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

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

将其转储到现有的HMTL-Element中

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

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

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