Salve..
Ho un controllo UpdatePanel di Ajax. in un'applicazione ..Nel updatepanel c'è una SELECT (dropdownlist) che al click ricarica un'altra dropdown.
Il problema era che al cambiamento dei dati della dropdown (e cioè alla fine della postback asincrona) alcuni browser se non tutti non conservavano la posizione dello scroll all'interno della pagina..cosa alquanto fastidiosa.
Leggendo un pò su internet ho applicato questo codice:
<script type="text/javascript">
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
xPos = document.body.scrollLeft;
yPos = document.body.scrollTop;
}
function EndRequestHandler(sender, args) {
document.body.scrollLeft = xPos;
document.body.scrollTop = yPos;
}
</script>
Effettivamente il problema si risolve in quanto il valore di scroll me lo memorizzo manualmente e lo riapplico al termine della postback asincrona.
Il problema però è che con Firefox il problema persiste.
Sono riuscito a scoprire che l'unico modo per forzare Firefox a ripristinare lo scroll è quello di mettere al posto di ....document.body.scrollTop = yPos;
.....setTimeout("document.body.scrollTop = yPos; 0);
Il che riporta la pagina allo scroll precedente ma con un evidente ritardo nel processamento il che provoca un fastidiosissimo flickerio ..per cui la pagina per un attimo si vede senza scroll.
Sto sbattendo la testa per risolvere anche questo problema ma nulla.
Qualcuno di voi l'ha già risolto ?
Saluti
Claudio

Rispondi quotando