我正在使用具有类似功能但允许跨站点脚本等功能GM_xmlhttpRequest
的油脂猴子脚本。xmlhttpRequest
我正在向各个页面发出一堆并行 http-requsts,然后使用 onload 从这些页面中读取一些数据。根据结果,我创建了新的 http-requst。这是一个示例,代码可能不起作用,更多的是为了说明我正在使用的东西。
function calleniro(nicerows, attempt){
if( attempt === 1){
var who = nicerows.contact.firstname+' '+nicerows.contact.lastname;
var where = ''
}else if(attempt === 2){
var who = nicerows.contact.firstname+' '+nicerows.contact.lastname;
var where = nicerows.contact.postal;
}else if(attempt === 3){
var who = nicerows.contact.firstname+' '+nicerows.contact.lastname;
var where = nicerows.contact.adress;
}
var url = 'http://personer.eniro.se/resultat/'+who+'/'+where;
GM_xmlhttpRequest({
method: "GET",
url: url,
onload: function(data) {
data = $.parseHTML(data.response);
var phone = $(data).find('.tel.row a').map(function(){
return $(this).text();
}).get();
//one company, save the data
if(vCard.length = 1){
//adding the company if we find a phonenumber or more.
if (phone.length > 0){
nicerows.contact.phone = phone;
}
more than one company.
}else if(vCard > 1){
attempt++;
calleniro(nicerows, attempt)
}
}
})
}
这非常快速地变成了一个带有分支加载功能的布布什卡娃娃九头蛇。很难追踪正在发生的事情。我想将这些功能更多地分离成这样的东西,例如:
var contact = callenrio(foo,bar)
//the next thing should happen after onload only.
if(contact.tel){
save(contact);
}
else{
callenrio(foobar,barfoo)
}