Я хотел бы спросить, возможно ли создать скрипт 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) Получить все URL-адреса, за которые не проголосовали, и сформировать массив (готово)
2) Поставить все всплывающие окна в очередь для открытия
3) Запустить первое всплывающее окно
4) Голосование завершено, всплывающее окно закрывается (готово)
5) Запустить второе всплывающее окно
6) По завершении массива перейти к следующему страница (готово)
Что думаешь?