我希望可以在与HTML页面交互后保存其状态。比如我点击了复选框,或者JavaScript设置了不同元素的值。如何保存“JavaScript渲染”的页面呢?谢谢。
https://developers.google.com/chrome-developer-tools/docs/commandline-api#copyobject
控制台示例:
copy(document.body.innerHTML);
应该就这样做,这可以获取整个页面而不仅是正文。
console.log(document.getElementsByTagName('html')[0].innerHTML);
document.body.innerHTML
可以获取当前文档主体的 HTML 表示。但这并不一定包括所有 DOM 对象内部状态,因为 HTML 中包含对象的初始默认状态,不一定是它们实际改变到的状态。确保获取所有状态的唯一方法是列出您想要保存的状态列表,并实际通过编程方式获取该状态。关于如何保存的问题,您需要进一步描述您真正要解决的问题。要获取使用JavaScript呈现的等效于查看源代码,包括Doctype和HTML标记,请将以下命令复制到Chrome控制台:
console.log(new XMLSerializer().serializeToString(document.doctype) + document.getElementsByTagName('html')[0].outerHTML);
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);
.html
文件,那就太好了。为了确保重复性,文件名需要包含格式化的日期时间。 - Akito.html
文件,那就太好了。为了使其绝对可重复,文件名需要一个格式化的DateTime。 - AkitoGrant的解决方案是最精确的,但仍需要手动操作控制台。 为了方便地实现相同的结果,而不必操作控制台,您可以使用以下浏览器扩展。
copy(document.body.innerHTML);
时获取的相同文本。
copy(document.documentElement.outerHTML);
,你将获得整个 HTML 页面,包括<head>
(除了DOCTYPE?
声明)。 - Dee J. Doena