我已经有一段时间在我的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

生成的快照为空白的原因是,在拍摄网络快照时,页面未加载动态生成的图形。

09-25 19:28