动态更改PhantomJS中的viewportSize

动态更改PhantomJS中的viewportSize,phantomjs,viewport,Phantomjs,Viewport,为了让PhantomJ以不同的视口宽度创建页面的屏幕截图,我想动态地调整它。但是,这不起作用: var system = require('system'); var page = require('webpage').create(); page.viewportSize = { width: 800, height: 600 }; page.open('http://example.com', function (status) { page.render('medium.pn

为了让PhantomJ以不同的视口宽度创建页面的屏幕截图,我想动态地调整它。但是,这不起作用:

var system = require('system');
var page = require('webpage').create();

page.viewportSize = { width: 800, height: 600 };

page.open('http://example.com', function (status) {

    page.render('medium.png');

    page.viewportSize = { width: 630, height: 420 };

    page.render('small.png');

    phantom.exit();
});
使用
phantomjs script.js
运行时,会生成两个相同的PNG文件
medium.PNG
small.PNG
,每个文件的宽度为800px。预期的行为是将
medium.png
设置为这样,将
small.png
设置为630px的宽度。如何做到这一点


附言:对于一个类似的问题,我会犯错误。对于这个问题,我还想避免一个非常糟糕的解决方法。

我认为应该可以设置视口大小,然后像这样再次打开页面:

var system = require('system');
var page = require('webpage').create();

page.viewportSize = { width: 800, height: 600 };

page.open('http://example.com', function (status) {

    page.render('medium.png');


    page.viewportSize = { width: 630, height: 420 };

    page.open('http://example.com', function (status) {

        page.render('small.png');

        phantom.exit();
    });
});

如果第二部分在第一部分的回调中,或者用
setTimeout
将其包装,则似乎可以工作。谢谢我把它改成了你推荐的方式,我无法复制你的问题。我在装有PhantomJS 2.1.1的Windows上更改了大小。我在装有PhantomJS 1.9版的Ubuntu上。?。我将尝试升级。谢谢你的评论!