var system = require('system');  
var page = require('webpage').create();var osName = system.os.name;  
console.log('os name:' + osName);  
if ('windows' === osName.toLowerCase()) {  
    phantom.outputEncoding="gbk";
}
var url = system.args[1];  
console.log('url:' + url);var url2 = system.args[2];  
console.log('url2:' + url2);//打开给定url的页面.
var start = new Date().getTime();  
page.open(url, function(status) {  
    if (status == 'success') {
    console.log('echarts page ok,time:' + (new Date().getTime() - start) + ' ms');
            setTimeout(function() {
            page.evaluate(function(url2) {
console.log('url2==:' + url2);
                postImage(url2);
                console.log("download echarts pic");
            });
        },800);
    } else {
        console.log("Page failed to load!");
    }
    setTimeout(function() {
        phantom.exit();
    },1200);
});以上就是phantomJS的代码 ,问题是url2这个参数传不到evaluate 这个方法里边去 打印的时候是null 如何才能传入到evaluate 这个沙盒中去呢? 请大神哥哥解答 

解决方案 »

  1.   

    你在外面定义了一个URL2,里面方法又有一个URL2参数,可是我没看到你调这个方法的时候对他赋值啊~
      

  2.   

    我附不了呢 你打算怎么赋值 能贴一下中间那块代码吗我没懂你这个是什么意思,你既然在外面定义了一个全局变量,你在方法里面直接用就可以了,但是你内部方法又写了一个同名参数全局变量给顶掉。那你现在是想用全局变量的URL2呢,还是要传一个新值呢?
      

  3.   

    我附不了呢 你打算怎么赋值 能贴一下中间那块代码吗我没懂你这个是什么意思,你既然在外面定义了一个全局变量,你在方法里面直接用就可以了,但是你内部方法又写了一个同名参数全局变量给顶掉。那你现在是想用全局变量的URL2呢,还是要传一个新值呢?我想用全局变量url2 但是 传不进 page.evaluate这个方法里  控制台打印的时候会报错 没有定义
      

  4.   

    我附不了呢 你打算怎么赋值 能贴一下中间那块代码吗我没懂你这个是什么意思,你既然在外面定义了一个全局变量,你在方法里面直接用就可以了,但是你内部方法又写了一个同名参数全局变量给顶掉。那你现在是想用全局变量的URL2呢,还是要传一个新值呢?我想用全局变量url2 但是 传不进 page.evaluate这个方法里  控制台打印的时候会报错 没有定义 page.evaluate(function(url2) {// 那你就把这个参数名换一个试试,不要和它重名
            console.log('url2==:' + url2);
                    postImage(url2);
                    console.log("download echarts pic");
                });