дефиниране на оценка на страница извън страницата, отворена в phantomjs

в основния пример за отваряне на уеб страница с phantomjs използваме кода по-долу за отворена мрежа и оценяваме кога отварянето на страницата е завършено във функция.

var page = require('webpage').create();
page.open('http://www.sample.com', function() {
  page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
    page.evaluate(function() {
           console.log(document.title);
    });
    phantom.exit()
  });
});

е някакъв начин, който ни позволява да дефинираме page.evaluate във функция извън page.open функция за обратно извикване за извикване по всяко време, когато имаме нужда, а не само след отваряне на страницата


person MOB    schedule 14.03.2014    source източник


Отговори (1)


не съм сигурен какво точно имате предвид, но от това, което разбрах от вашия пример, това може би може да помогне:

var page = require('webpage').create();
// document is already initialized
document.title = 'internal call';

page.onConsoleMessage = function (msg, lineNum, sourceId) {
    console.log('PAGE\'S CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};

var func = function () {
    console.log('Title: ', document.title);
}

// calling outside of the page.open:
func();

page.open('http://google.com/', function () {
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function () {
        // calling inside:
        page.evaluate(func);
        page.close();
        phantom.exit(0);
    });
});

Също така има бележка за функцията page.evaluate за аргументи и затваряния

person Andrey Borisko    schedule 23.04.2014