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

imp*_*s23 7 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.

T.J*_*der 7

据我所知,没有办法得到每个物体的每一个属性.

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

var html = document.documentElement.outerHTML;
Run Code Online (Sandbox Code Playgroud)

你必须检查你的其他目标浏览器是否这样做.至少,他们就必须innerHTMLbody:

var bodyHTML = document.body.innerHTML;
Run Code Online (Sandbox Code Playgroud)

但就其他事情而言,我不相信有任何方法可以获得每个对象的每个属性.例如,您可以window像这样找到属性:

var key;
for (key in window) {
    // ...'key' is the property name, window[key] is the value...
}
Run Code Online (Sandbox Code Playgroud)

...但这只会给你可枚举的属性,而不是不可枚举的属性.当然,你必须递归到对象,以得到他们的属性(允许的事实,你可以得到一个对象在一个以上的方式-例如,window === window.window还有还有top,self等后顾之忧;同理为document.all,document.forms,...).

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

  • @ user2486107:是什么让你认为文件元素上的`outerHTML`没有?我的意思是,我猜它不会有`doctype`,但...... (2认同)
  • @ user2486107:`window.innerHeight`不是DOM树的一部分.它只是"窗口"对象的一个​​属性,这是另一回事.你是对的,`outerHTML`不会有expandos等.我相当肯定没有一个地方你可以去获取**所有**的信息.`outerHTML`会给你大部分时间,但我认为没有任何东西可以给你**全部**.即使你在`window`上使用`for-in`,你也会错过任何不可枚举的属性......(并且在各个元素上展开.) (2认同)