Ten en cuenta que en las ciencias informáticas cualquier problema puede tener diferentes soluciones, así que aquí compartimos lo más óptimo y eficiente.
Solución:
Actualizar
Basado en la manipulación del historial del navegador, pasando el vacío string como segundo parámetro de pushState
método (también conocido como título) debería estar a salvo de futuros cambios en el método, por lo que es mejor usar pushState
como esto:
history.pushState(null, '', '/en/step2');
Puedes leer más sobre eso en el artículo mencionado
Respuesta original
Usar history.pushState
como esto:
history.pushState(null, null, '/en/step2');
- Más información (Artículo de MDN): manipular el historial del navegador
- Puedo usar
- Tal vez debería echar un vistazo @ ¿Admite Internet Explorer pushState y replaceState?
Actualización 2 contestar Idan Dagáncomentario de:
por que no usar
history.replaceState()
?
Desde MDN
history.replaceState() funciona exactamente como history.pushState() excepto que replaceState() modifica la entrada del historial actual en lugar de crear una nueva
Eso significa que si usas replaceState
, sí, la URL se cambiará, pero el usuario no puede usar el botón Atrás del navegador para volver a la anterior. estado (s) más (porque replaceState
no agrega una nueva entrada al historial) y no se recomienda y proporciona una mala experiencia de usuario.
Actualización 3 agregar window.onpopstate
Entonces, como esta respuesta llamó su atención, aquí hay información adicional sobre cómo manipular el historial del navegador, después de usar pushState
puede detectar el botón de navegación atrás/adelante usando window.onpopstate
como esto:
window.onpopstate = function(e)
// ...
;
Como primer argumento de pushState
es un objeto, si pasaste un object
en vez de null
puede acceder a ese objeto en onpopstate
lo cual es muy útil, así es como:
window.onpopstate = function(e)
if(e.state)
console.log(e.state);
;
Actualización 4 para agregar Lectura del estado actual:
Cuando su página se carga, es posible que tenga unnull objeto de estado, puede leer el estado de la entrada del historial actual sin esperar un popstate
evento usando el history.state
propiedad como esta:
console.log(history.state);
Prima: Utilice lo siguiente para comprobar history.pushState
apoyo:
if (history.pushState)
// o/
Cuando usas una función…
Link
Comentarios y puntuaciones
Si te sientes motivado, puedes dejar un artículo acerca de qué te ha gustado de esta división.