2016-04-25 5 views
0

Я использую PhantomJS вместе с PDFKit Python для создания PDF-файлов. У меня есть следующий сценарий Node мой сценарий Python звонит, чтобы получить размер тела каждой страницы:PhantomJS Высота Не меняющаяся

var args = process.argv.slice(2); 
var phantom = require('phantom'); 

phantom.create().then(function(ph) { 
    ph.createPage().then(function(page) { 
     page.viewportSize = {width: 20, height: 1200}; 

     page.open(args[0]).then(function(status) { 
      page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js').then(function(err) { 
       page.evaluate(function() { 
        return $('body').height(); 
       }).then(function(height) { 
        console.log(height); 
        ph.exit(); 
       }); 
      }); 
     }); 
    }); 
}); 

У меня возникли проблемы с Phantom вычисления высоты соответственно с JQuery. Как вы можете видеть, я целенаправленно ставил ширину как «20», чтобы проиллюстрировать, что размер окна Phantom, похоже, не настроен должным образом. Является ли это 20, 200, 2000, я получаю одну и ту же высоту из метода height() jQuery на странице (разные на странице, но всегда одинаковые на заданной странице независимо от ширины), что заставляет меня полагать, что высота должна оставаться неподвижным, независимо от того, установлен ли параметр viewportSize вручную. Руководство относительно того, почему это может произойти, очень ценится!

+0

Вы должны использовать 'page.set («viewportSize», ...)' и потреблять возвращаемый обещание –

+0

Как это? Я довольно новичок в использовании Promises ... page.set ('viewportSize', {width: 20, height: 1200}) then then (function (err) { page.open (args [0]). затем (функция (статус) { ... } }); – coltonoscopy

ответ

0

$ ('body'). Height() означает получение высоты document.body, которая будет регулярным числом, определяемым высотой HTML. Вы можете получить правильное значение через window.screen.height