2009-12-14 7 views
5

Ich habe schon einige Threads hier über das Flimmern in Firefox gesehen, aber keine, die das Problem beschreiben, das ich habe.Firefox jquery scrollTo Flicker Bug

Ich habe eine horizontale Scrolling-Website, feste Position Menüs und das Jquery-Plugin .ScrollTo Handhabung der nächsten und vorherigen Tasten. Dies funktioniert hervorragend in Chrome und Safari (weiß nicht über IE), aber in Firefox gibt es ein Flimmern jedes Mal, wenn Sie mit den Pfeilen in der oberen rechten Ecke nach rechts oder links scrollen.

See An Example Here

Ich habe versucht, alle Elemente einstellen, die eine feste Position haben zu Überlauf: Auto, aber das tat nichts. Ich bin nicht sehr vertraut mit JS oder Jquery, aber ich weiß genug, um Dinge zu ändern. Jede Hilfe würde sehr geschätzt werden!

+0

Es gibt kein Flackern für mich: Mac OS X (10.6.2), Firefox 3.3.5 – Paul

Antwort

11

Das Problem ist, dass Sie nicht die Standard-Browseraktion in Ihrer Klickfunktion abbrechen. Ändern Sie den Code dazu, und das Flimmern gehen weg:

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

Firefox versucht zu „blättern Sie zu dem #“ und animieren zur gleichen Zeit.

+1

Thank you! Das hat es getan. Ich hätte eigentlich nur fragen sollen, anstatt die Interwebs diese Woche für zehn Stunden zu testen. ;). –

+0

Glücklich zu helfen! Achten Sie darauf, das grüne Häkchen neben dieser Antwort zu markieren, damit es als "gelöst" markiert wird. Und willkommen bei StackOverflow! Hoffe, Sie mehr zu sehen! –

+0

+1 Sie würden denken, dass dieses Flimmern jetzt adressiert worden wäre ... es hat nicht :( – cp3

1

Gleich nach meinem Kommentar auf Seite Lesezeichen auf Dougs Post, ging das Licht in meinem Kopf an! Hoffnung, die Sie an Ihr Skript anpassen können, wenn Sie bookmarkability brauchen

<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; 
     } 
    }); 
});