javascript : 스크롤 끝 감지
나는이 div
와 레이어 overflow
로 설정을 scroll
.
의 맨 아래로 스크롤 div
하면 함수를 실행하고 싶습니다.
받아 들여진 답변은 근본적으로 결함이 있었으며 이후 삭제되었습니다. 정답은 다음과 같습니다.
function scrolled(e) {
if (myDiv.offsetHeight + myDiv.scrollTop >= myDiv.scrollHeight) {
scrolledToBottom(e);
}
}
Firefox, Chrome 및 Opera에서 이것을 테스트했습니다. 효과가있다.
위의 답변 중 어느 것도 작동하지 않았으므로 여기에 나를 위해 작동하는 세 번째 옵션이 있습니다! (이것은 jQuery와 함께 사용됩니다)
if (($(window).innerHeight() + $(window).scrollTop()) >= $("body").height()) {
//do stuff
}
이것이 누구에게나 도움이되기를 바랍니다!
OK 여기에 좋고 적절한 솔루션이 있습니다.
당신은 id="myDiv"
그래서 기능은 간다.
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
}
}
이것은 나를 위해 일했습니다.
$(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);
}
Regards
I created a event based solution based on Bjorn Tipling's answer:
(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));
And you use the event like this:
document.addEventListener('end-of-page-reached', function(){
console.log('you reached the end of the page');
});
BTW: you need to add this CSS for javascript to know how long the page is
html, body {
height: 100%;
}
Demo: http://plnkr.co/edit/CCokKfB16iWIMddtWjPC?p=preview
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight)
{
//your code here
}
I too searched it and even after checking all comments here and more, this is the solution to check if reached the bottom or not.
Take a look at this example: MDN Element.scrollHeight
I recommend that check out this example: stackoverflow.com/a/24815216... which implements a cross-browser handling for the scroll action.
You may use the following snippet:
//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");
}
});
Since innerHeight
doesn't work in some old IE versions, clientHeight
can be used:
$(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();
}
});
참고URL : https://stackoverflow.com/questions/3962558/javascript-detect-scroll-end
'Programing' 카테고리의 다른 글
스크립트 태그에 ID 부여 (0) | 2020.12.08 |
---|---|
jQuery / JavaScript에서 테두리 너비를 얻는 방법 (0) | 2020.12.08 |
모듈에서 사용 가능한 명령을 검색하려면 어떻게합니까? (0) | 2020.12.08 |
PHP의 datetime에서 년 / 월 / 일 가져 오기? (0) | 2020.12.08 |
클래스와 인스턴스 변수의 차이점은 무엇입니까? (0) | 2020.12.08 |