我希望将完整的DOM堆栈作为字符串。例如,请打开Chrome,按F12并输入“document.all”。该对象表示完整的DOM。我想将此对象转换为字符串。在Chrome中,您可以在Web调试器控制台中浏览对象,展开各个部分并查看其内容。有没有可能将document.all转换为字符串?或者类似的解决方案给我完整的DOM堆栈?我不仅仅想要innerHTML / outerHTML,我想要在当前DOM中定义的所有内容。有任何想法吗?提前谢谢......
编辑:好的,我认为我的问题有点令人困惑,对不起。为了澄清这一点:我希望得到 每个对象的定义,包括“document.location”,“document.location.hash”,“window”之类的内容.innerHeight“,”document.body.innerHTML“,依此类推,使用JavaScript。答案 0 :(得分:7)
据我所知,没有办法获得每个物体的每一个属性。
至少在某些浏览器(例如Chrome)中,您可以在outerHTML
上获得documentElement
的大部分 DOM (根元素,例如{{} 1}}):
html
您必须检查其他目标浏览器是否这样做。至少,他们var html = document.documentElement.outerHTML;
上会innerHTML
:
body
但就其他事情而言,我不相信有任何方法可以获得每个对象的每个属性。例如,您可以在var bodyHTML = document.body.innerHTML;
上找到这样的属性:
window
...但这只会为您提供可枚举的属性,而不是非可枚举的属性。当然,您必须递归到对象中以获取他们的属性(允许您可以通过多种方式访问对象 - 例如var key;
for (key in window) {
// ...'key' is the property name, window[key] is the value...
}
和还有window === window.window
,top
等担心;同样适用于self
,document.all
,...)。
很遗憾,虽然您可以获得很多您正在谈论的信息,但我认为您不能所有。
答案 1 :(得分:0)
您可以使用Object.getOwnPropertyNames
自行实现此功能,它甚至包含不可枚举的属性。我做了一个small example来说明如何做到这一点。