我已经有一段时间在我的Sailsjs项目中使用node-webshot了。在那方面,我正在用它拍摄路线的网络快照,该路线的视图包含使用Google图表创建的动态图表和图表。问题是,一旦生成了图形(在这种情况下为气泡图),node-webshot方法调用就会生成该页面的空白图像。但是,如果我在浏览器中打开路线,它将完美地生成图形。
这种图是动态生成的-http://jsbin.com/vewesafegi/edit?html,js,output
这是我用来生成其webshot的Sails js节点网络代码。
var options = {
screenSize: {
width: 710,
height: 500
},
shotSize: {
width: 710,
height: 'all'
},
userAgent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g',
siteType: 'url',
renderDelay: 500,
quality: 50
};
webshot('http://localhost:1337/generatedChart','Chart.png', options, function(err) {
//do something
res.ok();
});
最佳答案
好吧...所以我阅读了node-webshot的文档,发现在webshot的options
中,我可以设置一个名为takeShotOnCallback
的密钥,如果将其设置为true
,它将允许我进行回调(页面上的window.callPhantom('takeShot');
)。
此回调将告诉webshot调用截取页面的屏幕截图。
更多内容-https://github.com/brenden/node-webshot#options
生成的快照为空白的原因是,在拍摄网络快照时,页面未加载动态生成的图形。