是否可以将包含所有计算样式的整个文档的html传递给服务器以获取PhantomJS渲染并保存到PNG? (类似于html2canvas)
我想要实现的是使用PhantomJS截取网页的截图(当前状态)。因此,模态对话框,点击标签等内容都将出现在屏幕截图中。
答案 0 :(得分:0)
您无法传递计算样式,因为它们不存在于DOM中。应用CSS时,它是DOM节点的属性。为了实现这一点,您需要使服务器可以访问每种样式,例如,当样式表受访问控制时,服务器需要另外登录或类似的东西。但这应该是很少的情况。
发送
可能已经足够了document.documentElement.outerHTML
到服务器并让PhantomJS呈现收到的HTML
var page = require('webpage').create();
page.onLoadFinished = function(status){
page.render("page.png");
phantom.exit();
};
page.content = "received HTML as string"
.replace(/href="\/\//g, 'href="http://')
.replace(/href=\/\//g, 'href=http://');
有时资源(样式表)在其URL中缺少协议,但PhantomJS在加载本地页面时需要http协议(设置page.content
),否则它将假设URL使用file://
而不是{ {1}}。
您可能需要使用http://
或--ssl-protocol=tlsv1
等命令行选项运行PhantomJS。