admin管理员组

文章数量:1305299

I'm new to phantomJS and this is what I tried so far:

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

page.settings.userAgent = 'SpecialAgent';
page.open('', function (status) {
    if (status !== 'success') {
        console.log( 'Unable to access network' );
    } else {
        console.log( 'Opened ok' );
        page.includeJs( '.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();
});

but the output is

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

As you can see 'include JS callback' and 'include JS callback - eval' are not logged, where is the problem?

I'm new to phantomJS and this is what I tried so far:

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

page.settings.userAgent = 'SpecialAgent';
page.open('http://google.', function (status) {
    if (status !== 'success') {
        console.log( 'Unable to access network' );
    } else {
        console.log( 'Opened ok' );
        page.includeJs( 'http://ajax.googleapis./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();
});

but the output is

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

As you can see 'include JS callback' and 'include JS callback - eval' are not logged, where is the problem?

Share Improve this question edited Nov 13, 2014 at 21:05 Betlista asked Nov 13, 2014 at 19:13 BetlistaBetlista 10.5k14 gold badges73 silver badges115 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 12

Fastest gun in the west Phantom-style problem. You're exiting too early. page.includeJs is an asynchronous function, because it has to send a request to fetch the resource. You can see that, because it has a callback. You should move the phantom.exit(); to the end of the page.includeJs callback. All further processing should also be triggered from/moved to the page.includeJs callback.

If you want 'include JS callback - eval' to appear you have to additionally register to the page.onConsoleMessage event.

本文标签: javascriptPhantomJS39 includeJs is not executedStack Overflow