Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使page.injectJs()在PhantomJS中工作_Javascript_Node.js_Phantomjs_Headless Browser - Fatal编程技术网

Javascript 无法使page.injectJs()在PhantomJS中工作

Javascript 无法使page.injectJs()在PhantomJS中工作,javascript,node.js,phantomjs,headless-browser,Javascript,Node.js,Phantomjs,Headless Browser,我的代码中包含以下内容: phantom.createPage(function(page){ page.onCallback = function(data) { console.log("ph callback: ", data); }; page.open(req.query.testUrl, function(status){ if(status !== 'success'){ page.close();

我的代码中包含以下内容:

phantom.createPage(function(page){
    page.onCallback = function(data) {
        console.log("ph callback: ", data);
    };
    page.open(req.query.testUrl, function(status){
        if(status !== 'success'){
            page.close();
            res.status(500)
                .send('Page "' + testUrl + '" could not be loaded.')
                .end();
            return;
        }

        var result = page.injectJs('lib/my-test-script.js');
        console.log('injectJS: ', result);

        page.evaluate(function(){
            window.callPhantom(window.mocha.constructor.name);
        }, function(){
            console.log('finished');
            page.close();

            res.json({status: status});
            res.end();
        });
    });
});
console.log('injectJS:',result)
正在输出“injectJS:undefined”,而不是像文档中所说的那样显式地
false

此外,我已经使用
fs.readDir()
验证了my-test-script.js是否存在,但我的代码似乎根本没有被注入,更不用说,我从未从
page.onCallback()
获得控制台输出

我现在完全迷路了。我显然做错了什么,但我不知道会是什么。任何帮助都将不胜感激


关联。

您正在使用node.js和PhantomJS之间的桥梁(可能),因此PhantomJS文档不会直接应用

所有桥接函数(基本上都是PhantomJS函数)如果还没有进行回调,则会进行额外回调。这在桥接文档中进行了描述。injectJs也是如此。此外,您注册事件的方式也不同:

page.set("onCallback", function(data) {
    console.log("ph callback: ", data);
});
...
page.injectJs('lib/my-test-script.js', function(){
    page.evaluate(function(){
        window.callPhantom(window.mocha.constructor.name);
    }, function(){
        console.log('finished');
        page.close();

        res.json({status: status});
        res.end();
    });
});