在打开带有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,以便在我们需要的时候调用它,而不是在页面打开后调用
答案 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 函数的注释