質問: Tengo una pagina que usa un `` para desplazar hacia una ancla especifica como esta ` `. Cuando doy click a un link `` se crea una dirección como esta `http://myportafolio.com/#portafolio` Cómo hacer usando vanilla.js o cualquier otro método sugerido para ocultar el hash de la url y que no se genere historial; ya que, al dar click a un link del menu se genera un historial, que al dar **hacia atrás** en la barra de busqueda del navegador recorre todas los links visitados hasta regresar al inicio y al refrescar el navegador se queda en el último link visitado. Cómo transforma esto: `http://myportafolio.com/#portafolio` en esto: `http://myportafolio.com/` sin generar historial cuando visito una ancla dentro la misma pagina?
回答: Puedes referirte a este post: Pero básicamente sería alterando la historia del navegador: `window.history.pushState("", document.title, window.location.pathname);` ``` function removeHash() { window.history.pushState('', document.title, window.location.pathname) btn.disabled = !(location.hash || location.href.slice(-1) == '#') } const btn = document.getElementById('remove') btn.disabled = !(location.hash || location.href.slice(-1) == '#') btn.onclick = removeHash window.onhashchange = function () { btn.disabled = !(location.hash || location.href.slice(-1) == '#') } ``` ``` Quitar # Simular ``` Si no quieres preservar la historia puedes utilizar en lugar de pushBack: `window.history.replaceState(null, null, ' ')` Puedes averiguar más sobre este hilo en este enlace