javascript - PhantomJS 的 includeJs 没有被执行

标签 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();
});

但是输出是

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

如您所见,'include JS callback''include JS callback - eval' 没有记录,问题出在哪里?

最佳答案

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

如果您想要'include JS callback - eval' 出现,您必须额外注册到page.onConsoleMessage事件。

关于javascript - PhantomJS 的 includeJs 没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916602/

相关文章:

php - 我如何使用 Codeception/PhantomJS 断言字段不为空?

javascript - 如何通过 PhantomJs 获取高质量的 html 快照图像?

javascript - 确定哪个 JavaScript 文件应用了样式?

javascript - React Native 中的 setTimeout

javascript - 如何很好地 .join() 数组

javascript - PhantomJS 5-min Wiki phantom.exit() 奇怪

java - PhantomJSDriver 接受警报

javascript - 如何从网站获取JS链接

javascript - 哪里可以下载Tinymce 4.0.28 | tinymce.js 文件具体

javascript - 将秒表时间转换为秒