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

Get full DOM stack as a string

本文关键字:字符串 堆栈 DOM 获取      更新时间:2023-09-26

我想获得完整的DOM堆栈作为字符串。例如,请打开Chrome,按F12并输入"document.all"。该对象表示完整的DOM。我想把这个对象转换成字符串。在Chrome浏览器中,您可以探索对象,展开部分并在web调试器控制台查看其内容。是否有可能转换文件。都是字符串吗?或者一个类似的解决方案,给我完整的DOM堆栈?我不只是想要innerHTML/outerHTML,我想要当前DOM中定义的所有内容。什么好主意吗?提前感谢……

编辑:好吧,我想我的问题有点令人困惑,抱歉。为了澄清这一点:我想获得每个定义的对象的的每个属性,包括像"文档"这样的东西。"、"document.location位置。散列"、"窗口。innerHeight"、"document.body。innerHTML"等,通过使用JavaScript。

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

在至少一些浏览器(Chrome,例如),你可以得到大部分的DOMouterHTMLdocumentElement(根元素,例如,html):

var html = document.documentElement.outerHTML;

你必须检查你的其他目标浏览器是否这样做。至少,它们在body上有innerHTML:

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,…).

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

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