使用node.js设置PhantomJS的视口

时间:2013-05-24 13:31:28

标签: node.js phantomjs

我遇到了一个问题,我似乎无法在Node.js中为PhantomJS设置视口,使用Phantom-Proxy作为我用来桥接两者的模块。

我已经成功地完成了所有网页的屏幕抓取,但就像我上面所说的那样,我无法设置视口大小。

Phantom-Proxy docs中它说我应该设置视口属性,如:

//set viewport size for browser window
proxy.page.set('viewportSize',
{ width:320, height:480 }, function (result) {
    console.log(result.toString().cyan);
    worldCallback.call(self);
});

所以在我的代码中,我尝试将视口设置在实际占用screengrab的行上方:

module.exports = function (app, phantom) {
  app.get('/url/:url/:width?/:height?', function (req, res) {
    phantom.create({"debug": true}, function (proxy) {
      var page = proxy.page;

      page.set('viewportSize', { width: 320, height: 480 }, function (result) {
        console.log(result);
      });

      page.open(req.params.url, function () {
        page.waitForSelector('body', function () {
          page.renderBase64('PNG', function (img) {
              res.set('Content-Type', 'image/png');
              res.end(new Buffer(img, 'base64'), 'binary');
          });
        });
      });
    }); 
  });
};

虽然我认为这不会起作用,所以我尝试将page.open置于page.set的回调中并忽略了它,并尝试将page.set置于{{1}内回调,然后是page.open

虽然视口似乎仍然被忽略了!

任何帮助都将非常感谢!谢谢大家

1 个答案:

答案 0 :(得分:0)

原来它一直在努力。

基本上,尽管视口设置正确,但这并不意味着网页必然是视口的宽度和高度(除非例如;正文具有width 100%

网页将在视口中滚动,因此仍会呈现整个页面。