如何在IE8中转储JavaScript变量?

Pek*_*ica 70 javascript console firebug internet-explorer-8 ie-developer-tools

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

console.log("Element: ", element);
console.log(element);
Run Code Online (Sandbox Code Playgroud)

我只收到字符串

LOG: Element: [object Object]
Run Code Online (Sandbox Code Playgroud)

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

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

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

Xav*_*avi 101

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

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

  • 我敢打赌微软开发者讨厌这个. (16认同)

小智 92

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

  • **PROTIP**:使用`JSON.stringify(obj,null,"\ t")`来使`stringify`的输出更具可读性. (51认同)
  • 你也可以使用console.dir(); 在ie中实现这种行为. (15认同)
  • 该解决方案是对问题的更好回应.顺便说一句,如果您的IE不支持JSON对象,您可以使用http://www.JSON.org/json2.js这是一个很好的后备 (4认同)
  • @Chris哇,很棒!效果很好!我不得不让别人知道你的好建议,所以我添加了一个答案.希望你没关系.:-) (3认同)

Ren*_*ené 13

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

  • 在IE8中没有console.dir :( (12认同)
  • 另外.. console.dir不做深度序列化... JSON.stringify没有 (2认同)
  • 但是JSON.stringify不适用于递归对象. (2认同)

Cee*_*man 5

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

out = []; for (i in your_object) { out.push(i) } out.join("\n")
Run Code Online (Sandbox Code Playgroud)