Solución:
Puede activar manualmente popstate
evento en window
cada vez que llamas history.pushState()
.
history.pushState(state, '', url);
var popStateEvent = new PopStateEvent('popstate', { state: state });
dispatchEvent(popStateEvent);
El párrafo al que hace referencia es un poco ambiguo. Al leer el ejemplo en la misma página, está claro que popstate solo se activa cuando el usuario hace clic en el botón Atrás, no cuando el script llama pushState()
.
Está leyendo la “página de guía” de MDN, que no pretende ser normativa.
Considere leer la “página de documentación” de MDN para WindowEventHandlers.onpopstate
en lugar de:
Tenga en cuenta que solo llamar a history.pushState () o history.replaceState () no activará un evento popstate. El evento popstate solo se activa al realizar una acción del navegador como hacer clic en el botón Atrás (o llamar a history.back () en JavaScript). Y el evento solo se activa cuando el usuario navega entre dos entradas del historial para el mismo documento.
Otra forma indocumentada de desencadenar popstate
es por manipulación directa de la window.location
objeto.
// this also triggers popstate
window.location.hash = "#some-new-hash"