Saltar al contenido

¿Cómo puedo ignorar window.onpopstate al cargar la página?

Solución:

Compruebe la verdad booleana de event.state en popstate controlador de eventos:

window.addEventListener('popstate', function(event) {
    if (event.state) {
        alert('!');
    }
}, false);

Para asegurarse de que esto funcione, siempre especificar un nonull argumento de estado al llamar history.pushState() o history.replaceState(). Además, considere usar una biblioteca contenedora como History.js que proporciona un comportamiento coherente en todos los navegadores.

Tuve un problema similar y tuve que validar para asegurarme de que la página se cargó por completo.

Usé algo como esto:

var page_loaded = false;    
window.onpopstate = function(event){
    if(!page_loaded){
       page_loaded = true;
       return false;
     }
    //Continue With Your Code
}

Para reaccionar en popstate evento, debe insertar algún estado en el historial de la sesión.

Por ejemplo, agregue esta línea a la sección de documento listo:

history.pushState(null, null, window.location.pathname);

No es ideal, pero también funciona en Chrome, Firefox y otros navegadores.

Entonces el evento se dispara correctamente cuando el usuario hace clic en atrás o Hacia adelante botón, también cuando history.back(), history.forward(), history.go() los métodos se llaman manualmente. Cada vez que popstate se ha invocado, debe presionar otro estado nuevamente para que funcione.

Ver también:

  • Aplicaciones de una sola página y pushState HTML5
  • Cómo detectar el evento del botón Atrás del navegador – Navegador cruzado
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *