2009-12-14 23 views
5

He visto bastantes hilos aquí hablando de parpadeo en Firefox, pero ninguno que describa el problema que estoy teniendo.Firefox jquery scrollTo parpadeo bug

Tengo un sitio web de desplazamiento horizontal, menús de posición fijos y el complemento jquery .scroll Para manejar los botones siguiente y anterior. Esto funciona muy bien en Chrome y Safari (no sé sobre IE), pero en Firefox hay un parpadeo cada vez que te desplazas hacia la derecha o hacia la izquierda con las flechas en la esquina superior derecha y en la esquina.

See An Example Here

He tratado de establecer todos los elementos que tienen una posición fija a overflow: auto, pero que no hizo nada. No estoy muy familiarizado con JS o Jquery, pero sé lo suficiente como para cambiar las cosas. ¡Cualquier ayuda sería muy apreciada!

+0

No hay parpadeo para mí: Mac OS X (10.6.2), Firefox 3.3.5 – Paul

Respuesta

11

El problema es que no está cancelando la acción predeterminada del navegador en la función de hacer clic. Cambiar el código para esto, y el parpadeo va a desaparecer:

$(function(){ 
    $(".next").click(function(e) { 
     $.scrollTo('+=1000px', 600); 
     e.preventDefault(); 
    }); 
    $(".prev").click(function(e) { 
     $.scrollTo('-=1000px', 600); 
     e.preventDefault(); 
    }); 
}); 

Firefox está tratando de "desplazarse hasta la #" y animar al mismo tiempo.

+1

Gracias! Eso lo hizo. Debería haber preguntado en vez de curiosear en los interwebs durante diez horas esta semana. ;). –

+0

¡Feliz de ayudar! Asegúrese de marcar la marca de verificación verde al lado de esta respuesta para que esté marcada como "resuelta". ¡Y bienvenido a StackOverflow! Espero verte más! –

+0

+1 usted pensaría que este parpadeo ya habría sido abordado ... no tiene :( – cp3

1

Inmediatamente después de mi comentario en la página bookmarkability en la publicación de Doug, ¡la luz en mi cabeza se encendió! espera que usted pueda adaptarse a su script, si necesita bookmarkability

<a href="#gohere" class="mylink">Click</a> 
... 

$('.mylink').click(function(e) { 
    e.preventDefault(); 
    var anchor = $(this).attr('href'); 
    $.scrollTo(anchor, 1000, { 
     onAfter: function(){ 
      location.hash = anchor; 
     } 
    }); 
});