经过一些谷歌搜索,我没有发现任何满足我需求的东西。我想保存当前的网页,就像它是什么。我的意思是,许多网页都执行了Javascript并且改变了CSS,因此在一些用户交互之后,网页可能与首次加载到浏览器中的网页不同。我想将当前的网页状态保存到服务器并在服务器中呈现它。这个任务有没有Javascript库?谢谢!
答案 0 :(得分:2)
序列化完整的网页非常简单:
var serialized = document.body.innerHTML;
如果你真的需要完整的文件,包括头部,那么:
var serialized =
'<head>' +
document.getElementsByTagName('head')[0].innerHTML +
'</head><body>' +
document.body.innerHTML +
'</body>';
现在您需要做的就是通过AJAX提交。
关于服务器端渲染,它取决于渲染的含义。我目前正在使用wkhtmltopdf在我的网站上实现“另存为pdf”功能。它使用webKit在生成PDF之前呈现HTML,因此它完全支持CSS和javascript。
如果您需要将其保存为图像而不是PDF文件,则可以始终使用ghostscript 打印将PDF格式化为JPG / PNG文件。
答案 1 :(得分:2)
更简单:
var serialized = document.documentElement.innerHTML
outerHTML
而不是innerHTML
会更好,但它在Firefox中不起作用。
让我们测试一下。
>>> document.body.style.color = 'red'; >>> document.documentElement.innerHTML ... <body style="color: red;"> ...
答案 2 :(得分:1)
我正在开发一些非常相似的东西,并希望与IE8,FF3.6和CHROME 5.0中的innerHTML分享我所注意到的内容摘要
IE
FF,CHROME
答案 3 :(得分:0)
this post提到 serialiseWithStyles()函数,该函数计算每个元素的样式,并以内联方式打印样式。这消除了对单独样式表的需求。
然后将其提交给服务器,发送一个帖子请求。使用ajax或普通表格。