PhantomJS的includeJs未执行

Bet*_*sta 3 javascript phantomjs

我是phantomJS的新手,这是我到目前为止所做的:

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);

page.settings.userAgent = 'SpecialAgent';
page.open('http://google.com', function (status) {
    if (status !== 'success') {
        console.log( 'Unable to access network' );
    } else {
        console.log( 'Opened ok' );
        page.includeJs( 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function() {
            console.log( 'include JS callback' );
            page.evaluate(function(){
                console.log('include JS callback - eval');
            });
        });
        console.log( 'After include JS' );
    }
    phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)

但输出是

The default user agent is Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34
Opened ok
After include JS
Run Code Online (Sandbox Code Playgroud)

您可以看到'include JS callback'并且'include JS callback - eval'未记录,问题出在哪里?

Art*_* B. 11

西方幻影式问题中最快的枪.你太早退出了.page.includeJs是一个异步函数,因为它必须发送一个获取资源的请求.你可以看到,因为它有一个回调.您应该移动phantom.exit();page.includeJs回调的末尾.还应该从page.includeJs回调触发/移动所有进一步处理.

如果你想'include JS callback - eval'出现,你必须另外注册参加page.onConsoleMessage活动.