Wie wird die persistente Scrollbar-Position nach der Div-Aktualisierung in FF3 zurückgesetzt?

8

Ich habe ein seltsames Problem mit der Bildlaufleiste. Ich erstelle eine Seite, die jQuery und PHP verwendet, um Bilder dynamisch nacheinander in einen DIV zu laden. Dieser DIV ist eine feste Höhe, aber verwendet eine Bildlaufleiste für seine variable Breite. Das Problem ist, dass die Bildlaufleiste nach einer dynamischen Aktualisierung des DIV nicht zurückgesetzt wird. Wenn der Benutzer scrollt und dann mit neuem Inhalt aktualisiert wird, bleibt die Bildlaufleiste dauerhaft, anstatt sie nach links zurückzusetzen.

Dies scheint nur in FF3 zu passieren. Die Bildlaufleiste wird in Chrome, Safari und IE8 vollständig zurückgesetzt.

Bei jeder Aktualisierung wird das DIV ausgeblendet, geleert, mit CSS skaliert und dann sequentiell mit Bildern versehen.

Ich habe versucht, white-space: normal vor dem nowrap zurückzusetzen und mit overflow und auch jQuerys scrollLeft ohne Erfolg herumzuspielen. Es verhält sich immer noch merkwürdig in FF3 und nur FF3.

Klicken Sie auf ein Miniaturbild, verschieben Sie die Bildlaufleiste und klicken Sie auf einen anderen Daumen.

Danke für jede Hilfe!

    
rcon 22.04.2010, 20:29
quelle

5 Antworten

5

OK, nachdem ich über die Vorschläge von David M. nachgedacht habe, habe ich es herausgefunden. Da #interiors ein Kind von #content ist, wurde es auch versteckt. Also musste ich zuerst show setzen, scrollLeft und dann hide erneut einstellen. Ein bisschen klatschig, aber was auch immer funktioniert ...

%Vor%

Was die zwischengespeicherten Daten in FF3 betrifft, ist mir das noch nicht klar. Rette das für einen regnerischen Tag ...

Danke

    
rcon 27.04.2010, 19:24
quelle
3

Hier nur als Hinweis, hier ist ein relevanter Firefox-Bug:

Ссылка

    
Richard S. Hall 16.01.2015 16:44
quelle
0

Wenn ich dies in die FireBug interaktive Konsole eintippe:

%Vor%

scheint die Bildlaufleisten korrekt zurückzusetzen. Das Element muss möglicherweise auch mit display von block angezeigt werden, bevor scrollLeft gesetzt wird, aber ich bin mir nicht sicher - wenn ich das versuchte, hat Firefox die letzten Werte wiederhergestellt, als die Elemente mit overflow: auto wurde von Versteckt in Angezeigt geändert.

BEARBEITEN: Es gibt ein paar Dinge, die Sie versuchen könnten, Firefox zu zwingen, die Werte zurückzusetzen. Zuallererst könnten Sie das Element "content" entfernen und dann erneut hinzufügen, wenn sich der Hash ändert:

%Vor%

Zweitens könnten Sie die scrollLeft / scrollTop -Werte auf 0 zurücksetzen, bevor Sie $('#interiors').empty() oder $('#interiors').hide() verwenden, damit die Werte nicht gespeichert werden.

    
cryo 25.04.2010 09:32
quelle
0

Ich habe das Javascript bearbeitet, um die scrollLeft / scrollTop -Werte vor dem Ausblenden / Löschen / Einstellen des HTML-Codes zurückzusetzen. Ich habe all diese Operationen in einer einzigen Funktion zusammengefasst, um herauszufinden, was passiert.

Ich habe das in Firefox getestet und es scheint die Scrollprobleme zu beheben, aber ich habe keine anderen Browser getestet. Es sollte aber funktionieren.

Es scheint, dass ich in meiner anderen Antwort Recht hatte, dass Sie die Werte scrollLeft und scrollTop in Firefox zurücksetzen müssen, während das Element mit einem Überlauf von auto mit einer Anzeige von block though, as angezeigt wird Es scheint die alten Werte wiederherzustellen, wenn sie angezeigt werden, unabhängig davon, ob sich die Scroll-Werte im versteckten Zustand geändert haben:

%Vor%     
cryo 27.04.2010 10:08
quelle
0

Ich habe gerade das gleiche Problem gefunden und es gelöst, indem ich ein Zeitlimit gesetzt habe NACH ist #interiors auf der Seite sichtbar geworden.

%Vor%     
Zze 22.09.2016 23:59
quelle

Tags und Links