javascript - 为什么 phantomjs 代码不通过数组?

标签 javascript url phantomjs ubuntu-14.04

运行这段代码后,他保存了无数个带有第一页源代码的文件(“http://site1.com”),为什么他不通过其他链接并且不停歇?

var args = ["http://site1.com", "http://site2.com", "http://site3.com"];

var fs = require('fs');
var i = 0;

function handle_page(file){
    page.open(file,function(){
        page.evaluate(function(){
            fs.write(i + '.html', page.content, 'w');
        });
        setTimeout(next_page,100);
   });
}

function next_page(){
   var file = args.shift();
   if(!file){ phantom.exit(0); }
   i++
   handle_page(file);
}
next_page();

最佳答案

page.evaluate() 是 PhantomJS 中的沙盒页面上下文。它无权访问外部定义的任何变量。因此,您无法在其中引用 fspage ,也不需要这样做,因为 page.content 在外部上下文中可用:

page.open(file,function(){
    fs.write(i + '.html', page.content, 'w');
    setTimeout(next_page,100);
});

剩下的代码看起来不错。

关于javascript - 为什么 phantomjs 代码不通过数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29317439/

相关文章:

javascript - 使用 Joi 浏览器进行异或验证

javascript - 在使用 javascript 或 jquery 卸载之前拦截 URL

Javascript:谷歌地图标记列表中的 href 错误

javascript - PhantomJS 导航页面和完整的工作流程

javascript - 在 HTML 与 JS 中更改可见性属性的怪癖

javascript - 如何更改 Recharts 中每个条的颜色?

javascript - 路线变化的 Angular 变化检测

java - 从 URL 中提取随机生成的 ID

java - 在 java 中更改 PhantomJS 日志文件的路径

javascript - Phantomjs onResourceReceived 响应体工作状态