奇怪的是在phantomjs中获取页面的宽度

时间:2013-02-08 19:07:37

标签: phantomjs screen-capture

这是脚本代码:

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

page.paperSize = {
  format: 'A4', 
  orientation: "landscape"
};

page.open('http://www.google.com', function () {

  var arr = page.evaluate(function () {
     var pageWidth = document.body.clientWidth;
     var pageHeight = document.body.clientHeight;

     return [pageWidth, pageHeight];
  });

  console.log('pagwWidth: ' + arr[0] + '; pageHeight: ' + arr[1]);

  page.render('google.pdf');
  phantom.exit();    
});

我正在尝试获取document.body页面的clientWidth和clientHeight。当我执行这个脚本时,我得到了以下值:

pagwWidth: 400; pageHeight: 484

为什么上面的宽度是400px?我想我应该更广泛。


感谢您的回复。但后来我不明白以下事情。当我使用viewportSize = {width:1024,height:800}

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

page.paperSize = {
  format: 'A4', 
  orientation: "landscape"
};

page.viewportSize = {width: 1024, height: 800};
page.open('http://www.google.com', function () {

  page.render('google.pdf');
  phantom.exit();    
});

我收到以下文件: enter image description here

但是如果我使用viewportSize = {width:400,height:400}

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

page.paperSize = {
  format: 'A4', 
  orientation: "landscape"
};

page.viewportSize = {width: 400, height: 400};
page.open('http://www.google.com', function () {

  page.render('google.pdf');
  phantom.exit();    
});

我得到了同样的结果: enter image description here

所以我不明白viewportSize如何影响视图?

1 个答案:

答案 0 :(得分:12)

文档受视口大小的影响,而不受纸张大小的影响。想一想,网页浏览器中的网页与您当前的打印机设置无关。

如果您想影响页面布局,请使用viewportSize

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