page.injectJs无法使用node-phantom

时间:2013-12-03 19:04:06

标签: javascript jquery node.js phantomjs

为什么以下代码会返回错误:

phantom stdout: ReferenceError: Can't find variable: $

我正在将jQuery注入页面并尝试查找选择器:

以下更新代码(见评论)

portscanner.findAPortNotInUse(startPort, 60000, 'localhost', function(err, freeport) {
    if(err) {
        //console.log(err);
    }
    console.log(freeport);
    phantom.create({'port': freeport}, function(ph){

        return ph.createPage(function(page) {
            return page.open("http://www.targetsite.com/showpost.php?p="+posts[index].post_id, function(status) {
                console.log("opened post? ", status);

                var post_id = posts[index].post_id;
                page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js',function(err, post_id){
                    console.log(err);
                    return page.evaluate(function(post_id){
                        return $('#post_message_'+post_id); //undefined
                    },function(result){
                        console.log(result);
                        return ph.exit();
                    });

                });


            });
        });
    });
});

1 个答案:

答案 0 :(得分:1)

试试这个

return page.evaluate(function(post_id){
    return $('#post_message_'+post_id); //undefined
},function(result){
    console.log(result);
    return ph.exit();
}, post_id);

BTW哪个节点模块正在使用它?

phantomjs-node evaluate wiki