Código HTML
Código
Código JS
Código
let boxes = Array.from(document.getElementsByClassName('box')); function selectBox (id) { boxes.forEach(b => { b.classList.toggle('selected', b.id === id); }); } boxes.forEach(b => { let id = b.id; b.addEventListener('click', e => { history.pushState({id}, `Selected: ${id}`, `./selected=${id}`) selectBox(id); }); }); window.addEventListener('popstate', e => { selectBox(e.state.id); }); history.replaceState({id: null}, 'Default state', './');
Código CSS
Código
.boxes { display: flex; } .box { --box-color: black; width: 200px; height: 200px; margin: 20px; box-sizing: border-box; display: block; border-radius: 2px; cursor: pointer; color: white; background-color: var(--box-color); border: 5px solid var(--box-color); font-size: 30px; font-family: sans-serif; font-weight: bold; text-align: center; line-height: 200px; transition: all 0.2s ease-out; } .box:hover { background-color: transparent; color: black; } .box.selected { transform: scale(1.2); } #box-1 { --box-color: red; } #box-2 { --box-color: green; } #box-3 { --box-color: blue; } #box-4 { --box-color: black; }
El programa funciona bien en la navegación del historial hacia adelante y hacia atrás pero mi duda surge conforme a la actualización de la pagina, es decir, cuando yo actualizo la página me sale un error del método get pero desconozco si es posible hacer que esto no suceda y que simplemente se regrese al mismo estado de la página sin que salte ese error.