获取javascript呈现的页面的html(在与之交互之后)

kulphzqa  于 2023-03-11  发布在  Java
关注(0)|答案(5)|浏览(128)

我希望能够保存状态的html页面后,我已经与它互动。
假设我点击了一个复选框,或者javascript设置了各个元素的值。
如何保存“javascript渲染”页面?
谢谢。

knpiaxh1

knpiaxh11#

在Chrome(显然还有Firefox)中,有一个特殊的copy()方法可以将渲染的内容复制到剪贴板,然后你可以将其粘贴到你喜欢的文本编辑器中。
https://developers.google.com/chrome-developer-tools/docs/commandline-api#copyobject
控制台示例:

copy(document.body.innerHTML);

注意:我注意到Chrome在方法运行后报告未定义,然而,它似乎正确执行,正确的内容在剪贴板中。

lx0bsm1f

lx0bsm1f2#

这样就可以了,它将抓取ALL页面,而不仅仅是正文

console.log(document.getElementsByTagName('html')[0].innerHTML);
1zmg4dgp

1zmg4dgp3#

document.body.innerHTML将获得当前文档正文的HTML表示。
这不一定包括DOM对象的所有内部状态,因为HTML包含对象的初始默认状态,而不一定是它们可能已经更改到的状态。保证获得所有状态的唯一方法是列出要保存的状态,并实际通过编程获得该状态。
为了回答你的问题中关于保存它的部分,你必须描述更多关于你真正想解决的问题。

kmb7vmvb

kmb7vmvb4#

要获得view source的等价物并呈现javascript,包括doctype和html标记,请将命令复制到chrome控制台:

console.log(new XMLSerializer().serializeToString(document.doctype) + document.getElementsByTagName('html')[0].outerHTML);

在chrome控制台中,将鼠标悬停在输出的末尾,然后单击复制链接将其复制到粘贴板。

doinxwow

doinxwow5#

将以下内容粘贴到您的浏览器控制台(F12 -〉Console)会自动将一个名为rendered.html的文件保存到您的下载目录:

let link = document.createElement("a");
link.href = URL.createObjectURL(new Blob([document.getElementsByTagName('html')[0].innerHTML], { type: 'text/html' }));
link.download = "rendered.html";
link.click();
URL.revokeObjectURL(link.href);

相关问题