我想以字符串形式获取完整的 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。
最佳答案
据我所知,没有办法获取每个对象的每个属性。
至少在某些浏览器(例如 Chrome)中,您可以使用 documentElement
上的 outerHTML
获取大部分 DOM(根元素,例如 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
, ...).
很遗憾,虽然您可以获得很多您所谈论的信息,但我不相信您可以全部。
关于javascript - 以字符串形式获取完整的 DOM 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108829/