2012-03-27 4 views
2

Ich baue eine Seite, die mit Animation zu bestimmten Positionen blättern muss, wenn etwas passiert.Entscheiden, was scrollen soll, document.DocumentElement oder document.body

Ich bewerbe mich jQuery.animate zu document.documentElement und es scheint richtig auf Firefox und einige Versionen von IE zu arbeiten, während auf Chrome und anderen Versionen von IE es document.body anzuwenden hat zu arbeiten.

Bin ich hier ein Idiot? Was vermisse ich? Und wenn ich nicht bin, was ist der richtige Weg zu erkennen, welchen zu verwenden?

Antwort

1

Du bist kein Idiot, es ist immer schwierig gewesen, siehe Kommentare here zum Beispiel :)

Soweit ich mich erinnere, $('html, body').animate({scrollTop: '-=100'}) funktioniert in allen gängigen Browsern jetzt.

0

Ein einfaches Plugin zu verwenden ist scrollTo: http://demos.flesler.com/jquery/scrollTo/

sonst Sie in der Regel $(window).animate();

+0

Schönes Plugin, ich werde es definitiv verwenden. Aber es benötigt immer noch ein jQuery-Objekt, um darauf zu laufen, und das ist das Hauptproblem hier. Ich gebe dem '$ (window)' allerdings eine Chance. –

+0

Nun, '$ (Fenster)' hat nicht funktioniert. –

0

Es scheint, dass der sichere Weg, dies zu tun, um die Animation auf document.documentElement, document.body und window sofort ausgeführt werden verwenden können. Einer wird sicher arbeiten.

Obwohl diese Lösung schrecklich hässlich ist, funktioniert es in den meisten Fällen.

0

Es gibt einige sehr alte Methoden (nicht Standard, aber in jedem Browser funktioniert): window.scroll (), window.scrollTo(), window.scrollBy() und andere. Siehe z.B. diese MDN Seite für die Dokumentation: https://developer.mozilla.org/en-US/docs/DOM/Window.scroll

Beachten Sie, dass während in Firefox oder Chrome diese Methoden nur scrollTop/scrollleft ändern und verursachen keine sofortige Scrollen (Bildlauf, bis JavaScript-Event-Handler kehrt verzögert), in Opera und IE diese Methoden tatsächlich scrolle das Fenster sofort (was nicht sehr gut ist).

Es wäre so viel besser, wenn alle Browser dasselbe Element zum Scrollen verwenden könnten.

Verwandte Themen