Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

216
Visualizações
Hacer que una página se vuelva a cargar donde estaba cuando se hizo clic en el botón Atrás o Adelante

Tengo esta página que tiene dos tablas. La tabla de la izquierda es una lista de enlaces que apuntan a elementos en la tabla de la derecha usando A href='#itemid' con el correspondiente A id='itemid' en la tabla de la derecha. Funciona bien cuando simplemente hace clic en los enlaces de la tabla de la izquierda, pero si hago clic en el botón Atrás o Adelante, la página se vuelve a cargar pero no vuelve a la posición en la que estaba. La URL de la página incluye el #itemid, así que no No entiendo por qué la página no vuelve a esa posición cuando se hace clic en el botón Atrás o Adelante. Además, la primera carga es solo el nombre de la página web sin un hashtag, por lo que también necesito saber cómo decirle al navegador que vuelva a cargar la página con ambas tablas en la parte superior. Actualmente, la única forma en que puedo hacer que coopere es manteniendo presionada la tecla MAYÚS y haciendo clic en el botón Actualizar.

He probado todos los ejemplos de actualización que puedo encontrar y ninguno de ellos funciona.

 META http-equiv='refresh' content='0'

Esto fue desastroso, solo actualizaba constantemente la página.

 window.location,refresh(); document.location.refresh(); location.refresh();

Todos aquellos en un atributo unLoad() en la etiqueta BODY, con y sin verdadero como argumento para la función de actualización. Realmente no quiero que el servidor de mi servidor web tenga que servir constantemente la página de todos modos, por lo que la verdad no es una opción, incluso si funcionó.

Se me acabaron las ideas. También entiendo que el historial es una sola lista doblemente vinculada y que los botones de avance y retroceso solo se mueven a través de la lista en cada dirección, pero pensaría que la acción daría como resultado que la página se recargara de la forma en que se veía la última vez que estuvo. en esa página, no como si todavía estuvieras en la última página en la que estuviste.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe usar la API de historial para enviar y abrir estados de acuerdo con sus necesidades.

Cada vez que hace clic en uno de sus enlaces, debe presionar un estado y una ubicación para que cuando presione el botón Atrás, ese estado se restablezca con la ubicación dada.

A continuación se muestra un ejemplo de cómo podría usarlo. No recomendaría administrar todo el contenido de la página con innerHTML. Esto solo se hace por simplicidad. Lo que está haciendo en la devolución de llamada y con el estado, y en qué circunstancias usa saveState para impulsar el estado adicional, depende de usted.

 const router = (hook = console.log) => { window.onpopstate = ({ state }) => hook(new URL(window.location.href), state); hook(new URL(window.location.href)); return { anchorHandler: e => { e.preventDefault(); window.history.pushState(null, "", e.target.href); hook(new URL(e.target.href)); return false; }, saveState: (state, href = window.location.href) => { window.history.pushState(state, "", href); } }; }; const locations = { "/": (state) => `<h1>Home</h1> <p>Type something in this input. If you blur it, it will be saved as state. Now you can navigate back and forth to remove/restore it. <br /> For example, type something and navigate to the about page. Then press the back button. </p> <br /> <input value="${state?.text || ''}" onblur="saveState({text: this.value})" /> `, "/about": (state) => `<h1>About</h1>`, "/contact": (state) => `<h1>Contact</h1>`, } pageContent = document.getElementById("page-content"); const { saveState, anchorHandler } = router((location, state) => pageContent.innerHTML = locations[location.pathname] ? locations[location.pathname](state) : locations["/"](state) ); document .querySelectorAll("a") .forEach(a => a.addEventListener("click", anchorHandler));
 <nav> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li> <li><a href="/contact">Contact</a></li> </ul> </nav> <main> <div id="page-content"></div> </main>

No puedo mostrarlo como fragmento porque, por lo tanto, hay limitaciones de seguridad en torno al uso de la API de historial. Puede verificar extraer este repositorio y ejecutarlo localmente https://github.com/bluebrown/spa-router-example , o visitar esta página donde he implementado ese repositorio, https://spa-router-example.pages.dev / .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda