Я использую PhantomJS, чтобы закрепить снимок экрана панели управления и сохранить его в виде файла PNG. Это отлично работает, но когда я добавляю дополнительные аргументы (line
, dFrom
, dTo
) и хочу использовать их внутри page.evaluateJavaScript()
, он не работает. Есть ли способ использовать переменные PhantomJS внутри функции JavaScript?Используйте переменную PhantomJS внутри функции page.evaluateJavaScript
var page = require('webpage').create(),
system = require('system'),
address, output, size, line, dFrom, dTo;
address = system.args[1];
output = system.args[2];
line = "All";
dFrom = null;
dTo = null;
if (system.args.length > 2)
{
line = system.args[3];
dFrom = system.args[4];
dTo = system.args[5];
}
page.viewportSize = { width: 1200, height: 1800 };
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit();
} else {
page.evaluate(function() {
var body = document.body;
body.style.backgroundColor = '#fff';
body.querySelector('div#nav-section').style.display = 'none';
body.querySelector('div#to-hide-btns').style.display = 'none';
body.querySelector('div#main-section').style.overflow = 'hidden';
});
page.evaluateJavaScript(function() {
selectedLine = line;
dateFrom = dFrom;
dateTo = dTo;
onCriteriaChange();
});
window.setTimeout(function() {
page.render(output, {format: 'png', quality: '100'});
console.log('done');
phantom.exit();
}, 2000);
}
})
Если изменить его на это работает:
page.evaluateJavaScript(function() {
selectedLine = "S01";
dateFrom = "3/1/2015";
dateTo = "3/10/2015";
onCriteriaChange();
});