определить оценку страницы за пределами страницы, открытой в 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