Repeat interval

1

Hello, I made a post asking this: Setar Interval every 1 second

And I have the following code:

iniciarVerificacao();
var verificar;
function iniciarVerificacao(){
   if(verificar) clearInterval(verificar); 
   verificar=setInterval(function() {
      if ($('#botao').is(':visible')){
         console.log('botão vísivel');
         clearInterval(verificar);
         $('#botao').trigger('click');
         console.log('botão removido');
         iniciarVerificacao();
      }else{
         console.log('botão não vísivel');
         iniciarVerificacao(); << Aqui seria para reiniciar e verificar novamente se o botão está vísivel (function iniciarVerificacao()
      }
   }, 1000);
}

What I wanted: What, he would check every 1 second if the button is visible on the page (after an hour (or varies, so the interval of 1 second) the page refreshes and the button appears), and when it appears, it clicks the button, and a time appears to appear again, and the scan starts again. And stay in this infinite loop, but the interval for when you are removing the button, summarizing:

1->Verifica se o botão está ativo
2->**Para o intervalo para remover o botão**
3->Ativa o intervalo novamente para ver se o botão está ativo (dentro de uma hora)

But I have some problems, when the button appears the script is stopped, I do not know if it will stop because the update page , or if it is stopped in else because if you leave the script running forever, it stops at the message: console.log ('button not visible');

Does anyone know what it can be?

    
asked by anonymous 03.06.2018 / 01:29

1 answer

0

You do not need as many clearInterval(verificar) . It is enough that iniciarVerificacao() is never called, or called with delay,

var verificar;
(function iniciarVerificacao() {
    verificar = setTimeout(function () {
        var verificar2;

        if ($('#button').is(':visible') {
            console.log('botão visível');
            $('#button').trigger('click');
            console.log('botão removido');
        } else {
            console.log('botão não visível');
        }

        verificar2 = setTimeout(function () {
            iniciarVerificacao();
        }, 500);
    }, 500);
})();

See also if the button is not already deleted by default .

If you want to control when the flow will go through all iniciarVerificacao or not, set a flow offset

var devoDesviar = false;
var verificar;
(function iniciarVerificacao() {
    verificar = setTimeout(function () {
        var verificar2;

        if (!devoDesviar) { // condição para desvio de fluxo
            if ($('#button').is(':visible') {
                console.log('botão visível');
                $('#button').trigger('click');
                console.log('botão removido');
            } else {
                console.log('botão não visível');
            }
        }

        verificar2 = setTimeout(function () {
            iniciarVerificacao();
        }, 500);
    }, 500);
})();

(function desvio() {
    setTimeout(function () {
        devoDesviar = !devoDesviar;
        desvio();
    }, 30000); // a cada 30 segundos, chaveio a verificação do botão button.
})();

EDIT: In case the page is being cached, try putting the following tags in it,

<meta http-equiv="Cache-control" content="no-cache"></meta>
<meta http-equiv="Expires" content="-1"></meta>
    
03.06.2018 / 02:07