Avete presente quando, scorrendo una lunga pagina web, fate clic su un (apparentemente) innocuo link o su un (altrettanto apparentemente) innocuo pulsante che modifica solo una parte della pagina, ma che effettua anche la POST o la GET e - conseguentemente - il reload della pagina e - alla fine - vi riporta in cima alla pagina stessa?
Per evitare questo fastidioso problema si può usare un po' di JavaScript. Ho trovato un interessante frammento di codice su 4GuysFromRolla, e l'ho solo leggermente modificato per usare i cookie anziché gli hidden input per il passaggio dei parametri:
// Recupera le coordinate e le salva nei cookie function sstchur_SmartScroller_GetCoords() { var scrollX, scrollY; if (document.all) { if (!document.documentElement.scrollLeft) { scrollX = document.body.scrollLeft; } else { scrollX = document.documentElement.scrollLeft; } if (!document.documentElement.scrollTop) { scrollY = document.body.scrollTop; } else { scrollY = document.documentElement.scrollTop; } } else { scrollX = window.pageXOffset; scrollY = window.pageYOffset; } createCookie("scrollX", scrollX, 1); createCookie("scrollY", scrollY, 1); } // Riposiziona la pagina alle coordinate salvate nei cookie function sstchur_SmartScroller_Scroll() { var x = readCookie("scrollX"); var y = readCookie("scrollY"); window.scrollTo(x, y); } // Associa l'operazione di riposizionamento all'evento di reload della pagina window.onload = sstchur_SmartScroller_Scroll; /* * Associa l'operazione di salvataggio delle coordinate * a ogni evento che possa modificarle */ window.onscroll = sstchur_SmartScroller_GetCoords; window.onkeypress = sstchur_SmartScroller_GetCoords; window.onclick = sstchur_SmartScroller_GetCoords;
NOTA: richiede le funzioni per la gestione dei cookie
NOTA: benché l'articolo originale usasse lo script nell'ambito ASP.NET può essere inserito in qualunque contesto
Nessun commento:
Posta un commento