Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2016, 09:20
JUMASOL
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años, 1 mes
Puntos: 8
Scroll a ancla en página diferente

Hola.

Estoy buscando un sistema que me permita establecer un scroll suavizado hacia un ancla, pero en otra página.

He dado con este script que funciona:

http://stackoverflow.com/questions/1...pecific-anchor

Lo podéis ver en funcionamiento en esta otra dirección:

http://vostrel.cz/so/9652944/page.html

Como véis, "Scroll on page 1" conduce al ancla en

http://vostrel.cz/so/9652944/page.html#anchor_element

Y "Scroll on page 2" conduce suavemente al ancla en:

http://vostrel.cz/so/9652944/page2.html#anchor_element

El script es el que sigue:

Código:
(function($){  
    var jump=function(e)
    {
       if (e){
           e.preventDefault();
           var target = $(this).attr("href");
       }else{
           var target = location.hash;
       }

       $('html,body').animate(
       {
           scrollTop: $(target).offset().top
       },1000,function()
       {
           location.hash = target;
       });

    }

    $('html, body').hide()

    $(document).ready(function()
    {
        $('a[href^=#]').bind("click", jump);

        if (location.hash){
            setTimeout(function(){
                $('html, body').scrollTop(0).show()
                jump()
            }, 0);
        }else{
          $('html, body').show()
        }
    });  
})(jQuery)
Todo funciona perfectamente.

Se trata de dos páginas consecutivas con un listado de preguntas más frecuentes. En la primera a un listado completo, y en la segunda sólo el listado correspondiente a una subdivisión o subtítulo.

Así, en las dos páginas tienes los mismos enlaces a las anclas en la segunda página.

El problema es que mientras que acceder desde un enlace de la page1 al ancla en la page2 no tiene ningún fallo, si haces lo mismo con ese mismo enlace en page2 hacia el mismo ancla en page2 no hay efecto smooth en el scroll sino el típico salto al ancla.

Es decir, no funciona cuando usas el enlace desde la propia página a la que apunta.

Tiene que ver con cacheado, refrescado de página o como lo queramos llamar, porque he probado a establecer una redirección mediante htaccess, modificando el nombre del enlace en page2 para que redireccione al verdadero enlace con el ancla en esta página y funciona. Es decir, tienes que salir de la página y volver a entrar para que funcione el efecto. Se tiene que cargar todo de nuevo, porque si utilizas el enlace estando ya en la página no funciona.

No sé si a alguno de vosotros se os ocurre cómo modificar este script para que funcione tanto hacia una segunda página como desde la propia página que contiene el ancla.

Muchas gracias.