PhantomJs在不同页面中注入jQuery

PhantomJs在不同页面中注入jQuery,phantomjs,Phantomjs,我有一个PhantomJs脚本,在其中我创建了一个新的wepage,将jQuery注入其中,并从中获取一个URL列表。之后,我调用一个传递URL列表的函数,为每个URL创建一个新网页,并尝试从中恢复某些信息 var pageGlobal=require('webpage'); 函数createPage(){ var page=pageGlobal.create(); page.onAlert=函数(msg){ 控制台日志(msg); }; 返回页面; } var page=createPage(

我有一个PhantomJs脚本,在其中我创建了一个新的wepage,将jQuery注入其中,并从中获取一个URL列表。之后,我调用一个传递URL列表的函数,为每个URL创建一个新网页,并尝试从中恢复某些信息

var pageGlobal=require('webpage');
函数createPage(){
var page=pageGlobal.create();
page.onAlert=函数(msg){
控制台日志(msg);
};
返回页面;
}
var page=createPage();
第页打开('http://www.example.com/,功能(状态){
如果(状态==“成功”){
page.injectJs('jquery-1.6.1.min.js');
var urlist=page.evaluate(
函数(){
var urlist=[];
window.console.log=函数(msg){alert(msg)};
$(“td.row1>a”)。每个(函数(索引、链接){
var link=$(link.attr('href');
urlList.push(链接);
});
返回URL列表;
});
processUrlList(urlList);
}
});
函数processUrlList(urlList){

对于(i=0;i1.当您在
processUrlList
中完全删除jQuery的注入时会发生什么情况?我认为您不需要它,因为它已经被注入到第一页。2.我认为最好重写
processUrlList
来执行异步递归,而不是for循环。for循环可能会引入一些竞争条件。3.为什么要注册到
onAlert
,并将
控制台更改为
alert
。将页面中的
implementation记录为
alert
,最后只需注册到
onConsoleMessage
。感谢您的建议(我不知道onsolemessage)。但是,删除processUrlList中的注入不起作用,可能是因为我在每次迭代中创建了一个新的页面对象(我也纠正了这个问题),因为没有答案,您可以用改进的版本替换问题代码。