【发布时间】:2011-04-24 02:55:33
【问题描述】:
我想问是否有可能构建 Chrome 或 Greasemonkey 脚本女巫可以打开队列中的所有弹出窗口。到目前为止,我为此有 2 个单独的脚本,但效果不佳,因为弹出窗口具有反垃圾邮件功能,不允许同时使用太多。
我想要做的是以队列方式处理弹出链接数组,并且仅在上一个关闭时打开下一个。当它涉及队列和任何类型的事件绑定时,我没有经验。
所以我得到了资源:
1) 已经准备好的链接数组
var URL_Array = [];
$('form[name="form_gallery"] .img img').each(function(i,e){
// Format URL array here
if($(this).closest('.object').children('.phs_voted_count').length == 0){
var string = e.src;
var nowBrake = string.substring(string.length-7,7);
var splited = nowBrake.split('/');
var urlStr = '/window/friend/gallery_view/'+splited[3]+'/'+splited[4]+'.html';
URL_Array[i] = urlStr;
}
});
2) 在弹出窗口中对图像进行投票的脚本
/*######################################################*/
var voteBy = '#vte_mark_12'; // Prefered vote icon
var voteDefault = '#vte_mark_5'; // Default vote icon
var voteFormLoc = 'image_voting'; // Image voting popups form
var buyExtraVote = 'image_voting_buy'; // If run out of votes buy more
var captchaLoc = 'input[name="captcha"]'; // Captcha input field
var captchaTxt = 'Enter captcha text!'; // Captcha alert text
var simpatyFormId = '#sym_send'; // Simpaty window form
var startScript = true;
var formProcessedAlready = false; // Used to check if image already was voted
/*######################################################*/
$(function(){
if(startScript){
if($(captchaLoc).length > 0){
alert(captchaTxt);
$(captchaLoc).focus().css('border', '2px solid red');
return false;
}else{
if($('#50').length > 0){
$('#50').attr('checked', true);
$('form').attr('id', buyExtraVote);
$('#'+buyExtraVote).submit();
}else{
$('form').attr('id', voteFormLoc);
if($(voteBy).length > 0){
$(voteBy).attr('checked', true);
setTimeout("$('#"+voteFormLoc+"').submit()", 2000);
}else if($(voteDefault).length > 0){
$(voteDefault).attr('checked', true);
setTimeout("$('#"+voteFormLoc+"').submit()", 2000);
}else{
// If we have simpaty box autocast submit
if($(simpatyFormId).length > 0){
if($(captchaLoc).length > 0){
alert(captchaTxt);
$(captchaLoc).focus().css('border', '2px solid red');
return false;
}else{
$(simpatyFormId).submit();
formProcessedAlready = true;
}
}else{
formProcessedAlready = true;
}
}
}
}
if(formProcessedAlready){
self.close();
}
}
});
据我所知,它应该是这样的:
1) 获取所有未投票的网址并形成数组(完成)
2) 排队打开所有弹出窗口
3) 启动第一个弹出窗口
4) 投票完成,弹出窗口关闭(完成)
5) 启动第二个弹出窗口
6) 数组完成后切换到下一页(完成)
你怎么看?
【问题讨论】:
-
我最好只弹出一个窗口,这样任何防病毒程序都不会阻止它。启动第一个弹出窗口 -> 投票完成并使用新表单刷新弹出窗口 -> ...
-
我每次都愿意提供任何一种或新的解决方案。我将是唯一会使用它的人,所以我不担心任何阻塞。
标签: javascript jquery userscripts