Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取javascript呈现页面的html(与之交互后)_Javascript_Html_State_Save - Fatal编程技术网

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

获取javascript呈现页面的html(与之交互后),javascript,html,state,save,Javascript,Html,State,Save,我希望在与html页面交互后能够保存该页面的状态 假设我单击一个复选框,或者javascript设置各个元素的值 如何保存“javascript呈现”页面 谢谢。document.body.innerHTML将为您获取当前文档正文的HTML表示形式 这不一定包括DOM对象的所有内部状态,因为HTML包含对象的初始默认状态,而不一定是它们可能已更改为的状态。确保获得所有状态的唯一方法是列出要保存的状态,并以编程方式实际获取该状态 要回答问题中关于保存它的部分,您必须详细描述您真正想要解决的问题。这

我希望在与html页面交互后能够保存该页面的状态

假设我单击一个复选框,或者javascript设置各个元素的值

如何保存“javascript呈现”页面


谢谢。

document.body.innerHTML将为您获取当前文档正文的HTML表示形式

这不一定包括DOM对象的所有内部状态,因为HTML包含对象的初始默认状态,而不一定是它们可能已更改为的状态。确保获得所有状态的唯一方法是列出要保存的状态,并以编程方式实际获取该状态


要回答问题中关于保存它的部分,您必须详细描述您真正想要解决的问题。

这应该可以,并且将占据整个页面,而不仅仅是正文

console.log(document.getElementsByTagName('html')[0].innerHTML);
在Chrome(显然是Firefox)中,有一个特殊的copy()方法将渲染内容复制到剪贴板。然后,您可以通过将其粘贴到首选的文本编辑器来执行任何操作

控制台示例:

copy(document.body.innerHTML);

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

要获得与呈现javascript(包括doctype和html标记)的查看源代码的等价物,请将命令复制到Chrome控制台:

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

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

cool。。。但我需要一个办法来挽救这一切,对吗?那么,我是否应该创建一个bookmarklet,将document.body.innerHTML复制到剪贴板?@user420667-为了进一步回答问题,您必须详细描述您真正试图解决的问题。问题:我访问一个网页,我想在与它交互后保存它及其状态。@user420667-保存它的目的是什么?您将如何处理保存的版本?如果你告诉我们真正的最终目标是什么,我们可以帮助得更好。毕竟,如果你只是想再次查看,屏幕截图或打印页面可能是最简单的保存方式。我通过在浏览器中执行文件/另存为将数字收据保存到硬盘。有很多不同的保存方法,这取决于你以后想用它做什么。我想重新加载它。或者以html格式填写表格,并将其转换为pdf格式。不管目的是什么,都有很多。这可能更好,但问题是要挽救它。它可能需要一个bookmarklet否?取决于您想保存它的位置,您可以将它分配给一个变量,执行ajax调用并将其保存到数据库或文件中。但这一切都需要我将脚本注入页面,不是吗?不,您可以将其保存为字符串,或者如果必须将其保存为DOM元素,您可以创建文档片段或其他元素,将其存储在中,然后您可以将其作为普通元素进行横向转换,即使它没有“注入”到页面中。因此,从技术上来说,你可以抓取所有页面,删除它,重新绘制一个页面,然后带上你拥有的旧页面。从理论上讲,在跨浏览器之后,wise可能会出现问题。@user420667您可以通过在querystring中获取信息并通过服务器端呈现它们来做到这一点。假设页面url类似于foo.com/sex=male&age=120&type=developer。这可能是一个糟糕的做法,但它会对您有效,您不需要javascript。太棒了!我已经找了很久了。不知道为什么评级不高——这正是我们需要的。谢谢你救了我的命!这真是太棒了。向你致敬。
undefined
并不意味着该方法没有定义,它是说该方法返回它所返回的
undefined
。如果使用
copy(document.documentElement.outerHTML)
您将获得整个HTML页面,包括
(除了'DOCTYPE'声明)。