Saltar al contenido

Cambiar URL sin actualizar la página

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 pushStatepuede 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 nullpuede 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.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

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