Javascript 序列化HTMLDocument,然后在服务器中呈现它?
在谷歌搜索之后,我没有找到任何能满足我需求的东西。我想保存当前网页的原样。我的意思是,许多网页都执行了Javascript,CSS也发生了变化,所以在一些用户交互之后,网页可能与第一次加载到浏览器时的网页有所不同。我想将当前网页状态保存到服务器,并在服务器中呈现它。是否有用于此任务的Javascript库?谢谢 序列化一个完整的网页非常简单:Javascript 序列化HTMLDocument,然后在服务器中呈现它?,javascript,html,Javascript,Html,在谷歌搜索之后,我没有找到任何能满足我需求的东西。我想保存当前网页的原样。我的意思是,许多网页都执行了Javascript,CSS也发生了变化,所以在一些用户交互之后,网页可能与第一次加载到浏览器时的网页有所不同。我想将当前网页状态保存到服务器,并在服务器中呈现它。是否有用于此任务的Javascript库?谢谢 序列化一个完整的网页非常简单: var serialized = document.body.innerHTML; 如果您确实需要完整的文档,包括标题,那么: var serializ
var serialized = document.body.innerHTML;
如果您确实需要完整的文档,包括标题,那么:
var serialized =
'<head>' +
document.getElementsByTagName('head')[0].innerHTML +
'</head><body>' +
document.body.innerHTML +
'</body>';
var序列化=
'' +
document.getElementsByTagName('head')[0]。innerHTML+
'' +
document.body.innerHTML+
'';
现在您需要做的就是通过AJAX提交它
关于服务器端渲染,这取决于渲染的含义。我目前正在使用在我的网站上实现“另存为pdf”功能。它使用webKit在生成PDF之前呈现HTML,因此完全支持CSS和javascript
如果您需要将其保存为图像而不是PDF文件,您可以始终使用它将PDF打印为JPG/PNG文件。更简单:
var serialized = document.documentElement.innerHTML
outerHTML
取代innerHTML
会更好,但它在Firefox中不起作用
让我们测试一下
>>> document.body.style.color = 'red';
>>> document.documentElement.innerHTML
...
<body style="color: red;">
...
>>>document.body.style.color='red';
>>>document.documentElement.innerHTML
...
我正在做一些类似的工作,我想与大家分享一下我在IE8、FF3.6和CHROME 5.0中所注意到的innerHTML 即
- 从许多元素属性周围去掉引号
- 单例节点不是自关闭的
- 如果在加载HTML后元素上的值发生了变化,它将拾取新值
- 单例节点不是自关闭的
- 如果元素上的值发生更改 加载HTML后,它将 不拾取新值。它仅在初始呈现时拾取HTML中设置的默认值
然后,要将其提交到服务器,请发送post请求。使用ajax或普通表单。Ah,但是element.innerHTML是否包含元素的样式信息?添加了获取
内容的方法。但是,如果在一些用户交互之后,某些元素的样式被javascript更改了呢?这真的很烦人…然后在用户交互之后执行innerHTML。innerHTML是对浏览器HTML编译器/解析器的一种引用。它与view source.wkhtmltopdf不同,它可以将任何网页转换为PDF文件,是否有类似的工具可以将网页转换为PNG/JPG图像?我认为这个解决方案的问题还在于,当某些元素的样式被Javascript更改时,内部/外部HTML无法反映这些更改…我运行“document.body.color='red';document.documentElement.innerHTML;'在Chrome控制台中,我得到“”。您使用的是Firefox还是IE?document.body.style.color
,而不是document.body.color
。我的bad.textarea.value无法序列化。我认为该问题是该问题的重复。然而,这个问题的答案是好的。