7

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

4

2 回答 2

7

据我所知,没有办法获得每个对象的每个属性。

至少在某些浏览器(例如 Chrome)中,您可以使用on (根元素,例如)获取大部分DOMouterHTMLdocumentElementhtml

var html = document.documentElement.outerHTML;

您必须检查您的其他目标浏览器是否可以。至少,他们将拥有innerHTMLbody

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, document.forms, ...)。

所以不幸的是,虽然你可以得到很多你正在谈论的信息,但我不相信你能得到全部

于 2013-06-14T12:50:27.780 回答
0

您可以使用 自己实现这一点Object.getOwnPropertyNames,它甚至包括不可枚举的属性。我做了一个小例子来展示如何做到这一点。

于 2013-06-14T16:20:25.917 回答