获取完整的DOM堆栈作为字符串

时间:2013-06-14 12:48:17

标签: javascript dom properties

我希望将完整的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。

2 个答案:

答案 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.windowtop等担心;同样适用于selfdocument.all,...)。

很遗憾,虽然您可以获得很多您正在谈论的信息,但我认为您不能所有

答案 1 :(得分:0)

您可以使用Object.getOwnPropertyNames自行实现此功能,它甚至包含不可枚举的属性。我做了一个small example来说明如何做到这一点。