Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

127
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!