提问人:Pekka 提问时间:12/24/2009 最后编辑:Josh UngerPekka 更新时间:4/21/2017 访问量:43418
如何在 IE8 中转储 JavaScript 变量?
How do I dump JavaScript vars in IE8?
问:
我有一个对象需要在 IE8 中检查。
我尝试了开发人员工具,并尝试了它们的 Firebug 等效工具。
但是,当我将对象输出到日志时:console.log
console.log("Element: ", element);
console.log(element);
我只得到字符串
LOG: Element: [object Object]
而不是可点击的、可检查的转储。
是否可以像在 Firebug 中那样将对象转储到 Log 并检查其成员?
我不能使用自制的 dump() 函数,因为我想检查的元素太大了,浏览器会崩溃。
答:
console.log(element.toString()) 可能是你在这里的朋友......
评论
以下是我发现有用的一种技术:
- 打开开发人员工具栏(按 F12)
- 转到“脚本”选项卡
- 单击“开始调试”按钮
- 接下来,在控制台中键入“debugger”并按回车键。这应该会触发断点。
- 转到“观看”子选项卡
- 点按显示“点击添加...”的行,然后输入要检查的变量。请注意,该变量必须全局可用。
- 此时,您应该能够使用类似树的 UI 检查变量
- 完成调试后,单击“继续”按钮(或按 F5)
评论
有点偏离主题(因为它不适用于 DOM 元素),但我发现使用 JSON.stringify(object) 获取对象的 JSON 字符串非常方便,该字符串非常可读。
评论
JSON.stringify(obj, null, "\t")
stringify
一个建议是使用 Firebug-Lite: 它包装了控制台 obj,您可以在 IE 中看到结果,就像在大多数 firebug 控制台中一样。 希望这有帮助。
评论
如果您正在处理令人讨厌的代码并且控制台 .log 不可用,请在控制台中尝试以下操作:
out = []; for (i in your_object) { out.push(i) } out.join("\n")
@Chris用简单的解决方案评论了@Andy的答案:用于在IE的控制台中打印出所有详细信息。谢谢克里斯!console.dir(myObj)
评论
console.dir(obj)
"[object Object]"
我知道这是一个非常古老的问题,但我刚才正在寻找这个问题的答案。如果使用 IE 控制台不是绝对要求(这不是很好,IMO),那么您可以考虑使用 Firebug Lite (http://getfirebug.com/firebuglite)。这不是一个完美的解决方案,你可能不想将该脚本推送到你的生产环境中,而且它不像 Firebug 那样功能齐全,但当你不得不使用像 IE 这样的低端浏览器时,它在紧要关头非常好。
评论
有点笨重,但它适用于 DOM 对象:
console.log( testNode.outerHTML.replace(testNode.innerHTML,"") );
在您的页面中添加此标签:
<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>
事情会起作用的。
它在我的系统上运行。
注意:请尝试此解决方案。
将其转储到现有的 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
哈维出色回答的图片版本:
评论