La especificación del historial HTML5 es peculiar.
history.pushState()no despacha un popstateevento ni carga una nueva página por sí mismo. Solo estaba destinado a empujar al estado a la historia. Esta es una función de "deshacer" para aplicaciones de una sola página. Debe despachar manualmente un popstateevento o utilizarlo history.go()para navegar al nuevo estado. La idea es que un enrutador pueda escucharpopstate eventos y hacer la navegación por usted.
Algunas cosas a tener en cuenta:
history.pushState()y history.replaceState()no despacharpopstate eventos.
history.back(), history.forward()y los botones de avance y retroceso del navegador se despachanpopstate de eventos.
history.go()y history.go(0)hacer una recarga de página completa y no enviarpopstate eventos.
history.go(-1)(atrás 1 página) y history.go(1)(adelante 1 página) hacen popstateeventos de despacho .
Puede usar la API de historial de esta manera para impulsar un nuevo estado Y enviar un evento popstate.
history.pushState({message:'New State!'}, 'New Title', '/link');
window.dispatchEvent(new PopStateEvent('popstate', {
bubbles: false,
cancelable: false,
state: history.state
}));
Luego escuche los popstateeventos con un enrutador.