div
にoverflow
が設定されたscroll
レイヤーがあります。
div
の一番下までスクロールすると、関数を実行したいです。
受け入れられた答えは根本的に欠陥があり、その後削除されました。正解は次のとおりです。
function scrolled(e) {
if (myDiv.offsetHeight + myDiv.scrollTop >= myDiv.scrollHeight) {
scrolledToBottom(e);
}
}
FirefoxでこれをテストしましたChromeおよびOpera。動作します。
OKこれが適切なソリューションです
id="myDiv"
を含むDiv呼び出しがあります
ので、関数が行きます。
function GetScrollerEndPoint()
{
var scrollHeight = $("#myDiv").prop('scrollHeight');
var divHeight = $("#myDiv").height();
var scrollerEndPoint = scrollHeight - divHeight;
var divScrollerTop = $("#myDiv").scrollTop();
if(divScrollerTop === scrollerEndPoint)
{
//Your Code
//The Div scroller has reached the bottom
}
}
上記の回答のいずれも機能しないため、ここで3番目のオプションを選択します。 (これはjQueryで使用されます)
if (($(window).innerHeight() + $(window).scrollTop()) >= $("body").height()) {
//do stuff
}
これが誰にも役立つことを願っています!
これは私のために働いた:
$(window).scroll(function() {
buffer = 40 // # of pixels from bottom of scroll to fire your function. Can be 0
if ($(".myDiv").prop('scrollHeight') - $(".myDiv").scrollTop() <= $(".myDiv").height() + buffer ) {
doThing();
}
});
JQuery 1.6以降を使用する必要があります
動作する代替手段を見つけました。
これらの答えはどれも私にとってはうまくいきませんでした(現在FireFox 22.0でテストしています)。そして、多くの調査の結果、かなりクリーンで簡単なソリューションであることがわかりました。
実装されたソリューション:
function IsScrollbarAtBottom() {
var documentHeight = $(document).height();
var scrollDifference = $(window).height() + $(window).scrollTop();
return (documentHeight == scrollDifference);
}
よろしく
Bjorn Tiplingの答えに基づいて、イベントベースのソリューションを作成しました。
(function(doc){
'use strict';
window.onscroll = function (event) {
if (isEndOfElement(doc.body)){
sendNewEvent('end-of-page-reached');
}
};
function isEndOfElement(element){
//visible height + pixel scrolled = total height
return element.offsetHeight + element.scrollTop >= element.scrollHeight;
}
function sendNewEvent(eventName){
var event = doc.createEvent('Event');
event.initEvent(eventName, true, true);
doc.dispatchEvent(event);
}
}(document));
そして、次のようにイベントを使用します。
document.addEventListener('end-of-page-reached', function(){
console.log('you reached the end of the page');
});
ところで:ページがどれくらいの長さであるかを知るために、JavaScript用にこのCSSを追加する必要があります
html, body {
height: 100%;
}
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight)
{
//your code here
}
私もそれを検索し、ここですべてのコメントをチェックした後でも、これが一番下に到達したかどうかをチェックするソリューションです。
innerHeight
は一部の古いIEバージョンでは動作しないため、clientHeight
を使用できます。
$(window).scroll(function (e){
var body = document.body;
//alert (body.clientHeight);
var scrollTop = this.pageYOffset || body.scrollTop;
if (body.scrollHeight - scrollTop === parseFloat(body.clientHeight)) {
loadMoreNews();
}
});
この例を見てください:MDN Element.scrollHeight
この例を確認することをお勧めします:stackoverflow.com/a/24815216...クロスブラウザ処理を実装しますスクロールアクション用。
次のスニペットを使用できます。
//attaches the "scroll" event
$(window).scroll(function (e) {
var target = e.currentTarget,
scrollTop = target.scrollTop || window.pageYOffset,
scrollHeight = target.scrollHeight || document.body.scrollHeight;
if (scrollHeight - scrollTop === $(target).innerHeight()) {
console.log("► End of scroll");
}
});