Ich muss erkennen, ob ein Benutzer zum Ende einer Seite gescrollt ist. Wenn sie sich am Ende der Seite befinden und ich neuen Inhalt am unteren Rand hinzufüge, scrolle ich sie automatisch zum neuen unteren Rand. Wenn sie nicht unten sind, lesen sie den vorherigen Inhalt weiter oben auf der Seite, daher möchte ich sie nicht automatisch scrollen, da sie dort bleiben möchten, wo sie sind.
Wie kann ich feststellen, ob ein Benutzer zum Ende der Seite gescrollt ist oder ob er auf der Seite höher gescrollt hat?
javascript
Andrew
quelle
quelle
Antworten:
Siehe Demo
quelle
document.documentElement.scrollTop
anstellewindow.scrollY
für IE. Nicht sicher, welche Versionen des IE gegebenenfalls unterstützt werdenwindow.scrollY
.Aktualisierter Code für die Unterstützung aller gängigen Browser (einschließlich IE10 und IE11)
Das Problem mit der aktuell akzeptierten Antwort ist das
window.scrollY
sie im IE nicht verfügbar ist.Hier ist ein Zitat von mdn zu scrollY:
Und ein funktionierender Ausschnitt:
Code-Snippet anzeigen
Hinweis für Mac
Basierend auf dem Kommentar von @ Raphaël gab es ein Problem mit dem Mac aufgrund eines kleinen Versatzes.
Die folgende aktualisierte Bedingung funktioniert:
quelle
(window.innerHeight + window.pageYOffset) >= document.body.offsetHeight - 2
(window.innerHeight + Math.ceil(window.pageYOffset + 1)) >= document.body.offsetHeight
.Die akzeptierte Antwort hat bei mir nicht funktioniert. Dies tat:
Wenn Sie ältere Browser (IE9) unterstützen möchten, verwenden Sie den Alias,
window.pageYOffset
der etwas besser unterstützt wird.quelle
Ich habe nach einer Antwort gesucht, aber keine genaue gefunden. Hier ist eine reine Javascript-Lösung, die zum Zeitpunkt dieser Antwort mit den neuesten Versionen von Firefox, IE und Chrome funktioniert:
quelle
((document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight)
anstatt nurdocument.body.scrollHeight
Fälle zu berücksichtigen, in denen HTML / Körper auf Höhe eingestellt sind: 100%Das funktioniert
Wenn Sie ältere Browser (IE9) unterstützen möchten, ersetzen Sie window.scrollY durch window.pageYOffset
quelle
Ich habe gerade angefangen, mir das anzuschauen, und die Antworten hier haben mir geholfen, also danke dafür. Ich habe ein wenig erweitert, damit der Code bis zum IE7 sicher ist:
Hoffe, das erweist sich für jemanden als nützlich.
Hier, hab eine Geige;)
quelle
Wenn Sie
height: 100%
einen Container<div id="wrapper">
festlegen, funktioniert der folgende Code (in Chrome getestet):quelle
Diese Antwort wird Rand Fällen beheben, ist dies , weil
pageYOffset
ist ,double
währendinnerHeight
undoffsetHeight
sindlong
, so dass , wenn der Browser Ihnen die Informationen gibt, können Sie ein Pixel kurz sein. Zum Beispiel: Am Ende der Seite haben wirwahr
window.innerHeight = 10.2
wahr
window.pageYOffset = 5.4
wahr
document.body.offsetHeight = 15.6
Unsere Berechnung lautet dann: 10 + 5,4> = 16, was falsch ist
Um dies zu beheben, können wir
Math.ceil
denpageYOffset
Wert ändern.Hoffentlich hilft das.
quelle
wenn du jquery liebst
quelle
Sie können in die unendliche Schriftrolle von jquery schauen:
http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/
Das klingt so, als würde es das tun, wonach Sie fragen, vorausgesetzt, Sie sind bereit, die jquery-Bibliothek zu verwenden, und hoffen nicht auf eine strikte reine JS-Methode.
quelle
Überraschenderweise hat keine der Lösungen für mich funktioniert. Ich denke, das liegt daran, dass ich
css
durcheinander war undbody
bei der Verwendung nicht den gesamten Inhalt umhüllteheight: 100%
(ich weiß noch nicht warum). Auf der Suche nach einer Lösung habe ich mir jedoch etwas Gutes ausgedacht ... im Grunde das Gleiche, aber vielleicht lohnt es sich, es sich anzusehen - ich bin neu in der Programmierung. Es tut mir leid, wenn es das Gleiche langsamer macht, weniger unterstützt wird oder so Das...quelle
quelle
Dieser Code funktionierte auch in Firefox und IE.
quelle
Verwenden
defaultView
unddocumentElement
mit eingebettetem Funktionscode-Snippet:quelle
Sie können überprüfen, ob das kombinierte Ergebnis aus Fensterhöhe und Bildlauf oben größer als das des Körpers ist
if (window.innerHeight + window.scrollY >= document.body.scrollHeight) {}
quelle
Ich musste einen Weg finden (in Java), um systematisch nach unten zu scrollen und nach einer Komponente zu suchen, für die ich den richtigen XPath nicht kannte (lange Geschichte, also einfach mitspielen). Wie ich gerade sagte, musste ich bei der Suche nach einer Komponente nach unten scrollen und entweder anhalten, wenn die Komponente gefunden wurde oder der untere Rand der Seite erreicht war.
Das folgende Codefragment steuert das Scrollen nach unten zum Ende der Seite:
Das Fenster wird übrigens maximiert, bevor dieses Code-Snippet ausgeführt wird.
quelle
Die akzeptierte Antwort hat bei mir nicht funktioniert. Dies tat:
quelle