node.js - Node js + PhantomJs : send data to page. 评估

标签 node.js phantomjs

如何将变量从服务器发送到 page.evaluate ?

var test = 'Lorem Ipsum';

phantom = require('phantom')
    phantom.create(function(ph){
        ph.createPage(function(page) {
            page.open("http://www.google.com", function(status) {
            page.evaluate(function(){
               $('body').html(test);
            });
            page.render('google.pdf', function(){

             console.log('Page Rendered');
             ph.exit();
           });
        });
    });
});

预先感谢您的帮助。

编辑1

现在看起来像

var message = function(){
    return {message: 'Hello Word'};
};

phantom = require('phantom')
    phantom.create(function(ph){
        ph.createPage(function(page) {
            page.open("http://www.google.com", function(status) {
            page.evaluate(function(content){
               $('body').html(content);
            }, message);
            page.render('google.pdf', function(){

             console.log('Page Rendered');
             ph.exit();
           });
       });
    });
});

现在我没有任何错误,但我不知道如何处理这个对象以在 page.evaluate 中使用它

最佳答案

试试

page.evaluate(function (...) {...}, function (err, data){...}, arg1, arg2, ...);

例子:

var message = 'hello world';
page.evaluate(function(content){
    $('body').html(content);
    return 'any data'
}, function (err, anydata) {}, message);

在页面中添加jquery

page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', function(err) {
    //jQuery Loaded.
    //Wait for a bit if site have AJAX
    setTimeout(function() {
        return page.evaluate(function() {
            // USE JQUERY HERE
            //
            //

            return
        }, function(err, result) {
            console.log(result);
            ph.exit();
        });
    }, 3000);
});

请参阅自述文件: https://github.com/alexscheelmeyer/node-phantom

关于node.js - Node js + PhantomJs : send data to page. 评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20493536/

相关文章:

javascript - 如何为 Sequelize 模型设置外键?

javascript - Passport.js 不适用于 sails 套接字环境

java - 无法使用 BrowserMob-Proxy(PhantomJS) 捕获 HAR 请求和响应

java - 在 Selenium GhostDriver 中使用 JavascriptExecutor 处理警报/确认

node.js - Node-phantom 显示生成的 pdf 页数

node.js - 为 Axios HTTP 获取请求获取连接 ETIMEDOUT

javascript - 使用 puppeteer 绕过 Headless Chrome 的验证码

unit-testing - 如何记录 Mongoose 中的错误,但可单元测试?

angularjs - Yeoman 的 Angular.js Codelab - 修复测试

javascript - 如何使用 PhantomJS 渲染完整图表?