Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
¿Cómo activar una función al presionar el botón Atrás de la ventana?

Intentar activar una función (digamos una alerta) con solo presionar el botón Atrás (cada vez).

El código va como:

 $(function() { if (window.history && window.history.pushState) { window.history.pushState('', null, './'); $(window).on('popstate', function() { alert('Back button was pressed.'); }); } });
 <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

Sin embargo, el código anterior funciona pero solo una vez en la carga de la página, para que vuelva a funcionar, tengo que volver a cargar la página, por lo tanto, la función se ejecuta nuevamente para que detecte la "pulsación posterior".

Para superar esto, intenté llamar a la función en la misma función.

 function call() { if (window.history && window.history.pushState) { window.history.pushState('', null, './'); $(window).on('popstate', function() { alert('Back button was pressed.'); call(); }); } } $(document).ready(function() { call(); });
 <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

Esta vez, la carga en la página, se llama a call() y activa la alerta en la pulsación posterior. Pero la segunda vez que presiona Atrás, la alerta se activa dos veces, la tercera vez que presiona el botón Atrás, la alerta se activa 4 veces y así sucesivamente...

Aquí está el JSFiddle para jugar.

Hay algo de lógica que parece que me estoy perdiendo. Cualquier ayuda es apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Después de un poco de JSFiddling, manipulé un poco mi código para que funcionara de la manera que necesitaba.

la actualización no justificaría la consulta anterior, pero cumplió con mi requisito.

Aquí está el código:

 <div class="some" style="width:100px;height:50px;background:green;display:none;"></div> <button class="some_btn">tada</button> <script> $(".some_btn").click(function() { $(".some").css("display","block"); call(); }); function call() { if (window.history && window.history.pushState) { if($('.some').css('display') == 'block') { window.history.pushState('', null, './'); $(window).on('popstate', function() { $(".some").css("display","none"); }); } else { } } } </script>

entonces, en el código anterior, la call() se activa cada vez que se muestra ese bloque en particular y se anula el "botón Atrás" y al ocultar el bloque, el botón Atrás se habilita.

Espero que esto ayude al que lo necesita.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda