在phantomjs中打开页面外定义页面评估

时间:2014-03-14 20:39:59

标签: javascript phantomjs

在打开带有phantomjs的网页的基本示例中,我们在下面的代码中使用open web并评估函数中页面打开时的完成情况。

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.open回调函数的函数外侧定义page.evaluate,以便在我们需要的时候调用它,而不是在页面打开后调用

1 个答案:

答案 0 :(得分:4)

不确定你究竟是什么意思,但从我的例子中我所理解的这可能有所帮助:

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 函数的注释