如何从服务器向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
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(); }); }); }); });
预先感谢您的帮助.
EDIT1
现在看起来像
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