jQuery Javascript scrollTop no funciona como se esperaba en Chrome para restaurar la posición de la barra de desplazamiento

Estoy usando el siguiente jQuery Javascript para guardar la posición de la barra de desplazamiento antes del evento de descarga y volver a aplicarla:

$(document).ready(function () { document.documentElement.scrollTop = $.cookie("scroll") || 0; }); window.onbeforeunload = function () { $.cookie("scroll", document.documentElement.scrollTop, { expires: 7 }); } 

Básicamente, tengo una serie de enlaces que actualizan la página y me gustaría que el navegador restaurara la posición de la barra de desplazamiento. Tenga en cuenta que no puedo usar AJAX en esta instancia. Funciona una delicia en Firefox. Sin embargo, en Chrome y Safari solo funciona cuando se actualiza la ventana del navegador, y no cuando se hace clic en el enlace para actualizar la página. Es como si hacer clic en el enlace no se reconoce como una vez descargada.

He intentado modificar el código para configurar la cookie de desplazamiento mediante un evento de clic de la siguiente manera, sin suerte:

 $(document).ready(function () { document.documentElement.scrollTop = $.cookie("scroll") || 0; }); $('a.lockscrollbar').click(function() { $.cookie("scroll", document.documentElement.scrollTop, { expires: 7 }); } 

Para mi información, estoy usando jQuery 1.4.2 con el complemento de cookie de jQuery.

¿Algunas ideas?

Esta es una publicación anterior, pero tenía el mismo problema con Chrome 20. El uso de jQuery 1.7.1 me funcionó:

 $(window).on('load', function(){ $('html body').scrollTop(0); }); 

Antes de Chrome 10, este uso funciona como un encanto … ahora parece que solo funciona en Firefox (¿Alguien ha probado en IE9?)

 var y = $(window).scrollTop(); $('html, body').animate({scrollTop:(y + 50)}, 1000); 

Desplazar el en Chrome y Safari no funciona muy bien, o posiblemente no funcione. No sé por qué, pero una vez tuve un problema similar y lo solucioné usando un

nested dentro del .

Este es el código que uso (aunque el sitio en el que estoy trabajando todavía está en fase de comstackción, pero esto funciona):

 $(document).ready(function(){ $(window).scroll(function(){ var posY = $(document).scrollTop(); $('#trigger').click(function(){ if($.browser.webkit){ $('body').stop().animate({scrollTop:0},'slow'); }else{ $('html').stop().animate({scrollTop:0},'slow'); } }); }); }); 

Webkit no se desplazará a la parte superior cuando el objeto que se desplaza es ‘html’, por lo que primero verifico el tipo de navegador (y antes de que lo diga, sé que jQuery.support sería mejor, como dije en el estado de comstackción). Otros navegadores que no sean webkit aceptan el selector ‘html’, así que lo uso para todos los demás navegadores (de manera molesta, usar ‘html’ funciona en Opera pero no en Chrome, y usar ‘body’ funciona en Chrome pero no Opera …!).