Como abrir o pop-up em um loop e executar o retorno de chamada de acordo para retornar o status? (Script Greasemonkey)
Não consegui formular um título adequado para essas perguntas, então descreverei a idéia / problema aqu
Então, atualmente tenho 2 scripts para uma tarefa:
Primeiro script: executa o loop de todas as imagens em um site específico e, se não tiverem sido votadas antes de abrir o pop-up de votação fornecido pelo portal (no máximo 20 imagens por vez
Segundo script: define o voto para a imagem e envia o formulário, após o envio do formulário fechar o pop-u
O problema aqui é que, após algum tempo, a janela pop-up define o campo captcha para evitar esse tipo de coisa :). Portanto, a verdadeira questão é: Posso combinar dois scripts em um e, no meu loop, aguardar o pop-up abrir e verificar se o campo captcha está lá? Eu poderia parar o loop e dizer ao usuário para inserir manualmente o captcha e recarregar a página depois disso. Atualmente, o script (ofc) irá apenas executar e abrir pop-ups (como posso esperar em loop para o pop-up abrir e carregar o DOM)?
Bah, realmente difícil de explicar, por favor, diga-me se precisar de mais informaçõe
EDIT: Ok, vamos mudar:Como abrir o pop-up em loop e aguardar o retorno de chamada do script pop-up e só então, dependendo do status do retorno, continua
Todo o script GM:
// ==UserScript==
// @name Open image popups and vote
// @namespace Popuopener
// @description Open image popups and vote
// @include http://example.com/friend/*
// @include http://example.com/window/friend/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
// Loop options
var start_Script = true;
var loop = 0;
// Photo rating options
var formProcessedAlready = false;
if(start_Script){
$('form[name="form_gallery"] .img img').each(function(i,e){
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';
wondows = window_open(urlStr, 700, 630);
if(wondows.getElementById("vte_mark_5")){ // Trows me with wondows.getElementById is not a function
alert("Popup loaded"); // Does not getting so far
}else if(wondows.getElementsByName("captcha")[0]){
alert("Captcha inside");
return false;
}
if($('input[name="captcha"]').length > 0){
alert('Enter captcha then (F5)!');
return false;
}else{
if($('#vte_mark_5').length > 0){
$('#vte_mark_5').attr('checked', true);
$('form[name="popup_form"]').submit();
}else{
formProcessedAlready = true;
}
if(formProcessedAlready){
window.close();
}
}
}else{
loop++;
}
alert("End");
}
}
function window_open(url, width, height, name, scroll_bar, location){
_top = Math.ceil((screen.height - height)/2);
_left = Math.ceil((screen.width - width)/2);
if(scroll_bar != true){
var scroll = 'no';
}else{
var scroll = 'yes';
}
if(typeof location != "undefined" && location == true){
var location = 'yes';
}else{
var location = 'no';
}
if(name == undefined){
name = Math.round(999999 * Math.random());
}
return window.open(url, name , 'width=' + width + ',height=' + height + ',location='+ location +',status=no,toolbar=no,menubar=no,resizable=yes,scrollbars=' + scroll + ',top=' + _top + ',left=' + _left);
}