2016-09-07 2 views
2

PhantomJSが異なるビューポート幅でページのスクリーンショットを作成するには、動的に調整したいと思います。しかし、これは動作しません:phantomjs script.jsで実行するとPhantomJSのビューポートサイズを動的に変更する

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(); 
}); 

が、これは800ピクセルの幅で二つの同一のPNGファイルmedium.pngsmall.pngを生成します。期待される振る舞いは、このようなmedium.pngを持っていて、幅は630pxでsmall.pngです。これはどのように達成できますか?

PS:This answer私にとっても同様の疑問が生じます。また、その質問へのthe accepted answerは、私が避けたいと思っている非常に醜い回避策を示唆しています。

+0

私はあなたの問題を再現することはできません。サイズはPhantomJS 2.1.1でWindows上で変更されています。 –

+0

私はPhantomJSバージョン1.9でUbuntuにいますか?私はアップグレードしようとします。ご意見ありがとうございます! – hielsnoppe

答えて

3

私はビューポートのサイズを設定し、このようにページを再度開くことが可能であるべきだと思う:

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(); 
    }); 
}); 
+0

最初のコールバックの中に2番目の部分があるか、または 'setTimeout'でそれをラップするかのどちらかで動作するようです。ありがとう! – hielsnoppe

+0

あなたのお勧めの方法に変更しました – Sven

関連する問題