문서의 스크롤 위치는 어떻게 얻습니까?


답변:


46
$(document).height() //returns window height

$(document).scrollTop() //returns scroll position from top of document

나는 똑같은 방식으로 생각했지만 console.log ($ (this) .scrollTop ()) = 1187 console.log ($ (this) .height ()) = 1762 왜 그렇게 많이 다른가요? 페이지 하단으로 스크롤 한 경우 575px의 경우. 그 575px는 어디로 갔습니까? 스크롤 막대는 576px 일 수 없습니다. :)
Somebody

3
다시 내 잘못이다. 방화범 창이 열린 스크롤바를보고있었습니다. Ofc는 이제 576px가 될 수 있습니다. :) 감사합니다 나는 주제가 닫힌 것 같아요.
누군가

101
-1-매우 훌륭하지만에 관한 질문에 대한 답변이 없습니다 scrollHeight.
Wayne

8
맞습니다. 이것은 jquery 질문입니다. 그러나 $ (document) .height () 또는 $ (document) .scrollTop () 모두 원하는 정보를 제공하지 않습니다. scrollHeight에 대한 요청입니다. scrollHeight 값은 요소에 사용할 수있는 총 높이입니다 (스크롤 가능한 경우 해당 값이 높이보다 클 수 있음). scrollTop은 요소가 위쪽에서 얼마나 멀리 떨어져 있는지를 반환합니다. 사용 가능한 총 높이가 무엇인지 대답하지 마십시오. scrollHeight에 대한 이해는 help.dottoro.com/ljbixkkn.php 를 참조하십시오.
teynon 2011

4
이것은 문서가 현재 스크롤되는 높이에 관한 질문자 (asker) 의 의도 된 질문에 답하기 때문에 답으로 표시됩니다 . ergo "scrollHeight". 이 이름이 다른 맥락에서 사용 된 것은 우연의 일치입니다.
Chase Sandmann

177

다음 scrollHeight은 jQuery 선택기를 사용하여 얻은 요소 를 가져 오는 방법입니다 .

$(selector)[0].scrollHeight

경우 selector요소 (예를 들면의 ID입니다 elemId), 배열의 0 인덱스 항목을 선택하고자하는 요소가 될 것이며, 보장되는 scrollHeight올바른 것입니다.


12
Mozilla 지식 기반에 따르면 8.0 developer.mozilla.org/en/DOM/element.scrollHeight
yodabar

2
@Tomas와 동의하면 브라우저 간 문제를 더 잘 처리하기 위해 jQuery의 추상화를 사용합니다. 예를 들어 위의 내용을 $ (selector) .offset (). top으로 수정할 수 있습니다.
Bob Gregor

3
음, $ (document) .offset ()은 null을 반환하지 않으며 .offset ()은 브라우저 스크롤 막대의 위치와 관련이 없습니다 (.offset ()는 문서에 대한 항목의 좌표를 반환합니다). 가능한 경우 jQuery를 사용해야한다는 데 동의하지만 브라우저 간 지원이 없기 때문에 jQuery는 이에 대한 추상화를 제공하지 않습니다.
BrainSlugs83

2
당신은 또한 (선택) 갔지 (0) .scrollHeight $ 할 수
앨리

1
@Dmitri Zaitsev .scrollHeight는 jQuery 속성이 아니라 DOM 노드 속성입니다.
Zemljoradnik

45

Jquery 1.6 이상을 사용하는 경우 값에 액세스하려면 prop을 사용하십시오.

$(document).prop('scrollHeight')

이전 버전은 attr에서 값을 가져 오는 데 사용되었지만 1.6 이후에는 사용되지 않았습니다.


12
$ (document) .attr ( "scrollHeight")처럼 jQuery 1.7.1에서 "undefined"를 반환합니다.
Michael

5
그것은 body 요소가 없기 때문입니다. $ (document.body) .prop ( 'scrollHeight') 여야합니다.이 시점에서 document.body.scrollHeight를 사용할 수 있습니다.
goddogsrunning

6
document.getElementById("elementID").scrollHeight

$("elementID").scrollHeight

그렇다면 문서 객체의 요소 ID는 무엇입니까? ... "document.body.scrollHeight"를 의미 하셨나요?
BrainSlugs83

2
$ ( '# gallery'). scrollHeight는 나에게 정의되지 않음 // # gallery는 내 오버플로의 ID입니다. 자동 요소, 작동하지 않음
Anmol Saraf 2013 년

6

HTML DOM 요소를 사용하지만 jQuery 선택기는 사용하지 않습니다. 다음과 같이 사용할 수 있습니다.

var height = document.body.scrollHeight;

3

이와 같은 방법으로 문제를 해결할 수 있습니다.

$.getDocHeight = function(){
     var D = document;
     return Math.max(Math.max(D.body.scrollHeight,    D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight));
};

alert( $.getDocHeight() );

추신 : 필요할 때마다 해당 함수를 호출하십시오. 경고는 테스트 목적입니다.


어떤 이유로이 기능이 제대로 작동하지 않습니다. iframe 내부에서 사용합니다. <html>의 실제 높이는 256px이고,이 함수는 337px를 제공하며 어디에서 오는지 전혀 모릅니다. 추신 : Chrome 18을 사용하고 있습니다.
jurchiks

@jurchiks : iframe이있는 위치에 대한 링크가 있습니까?
Zuul

blade.dateks.lv/salidzinat?ids=58664,43586 . 물음표 중 하나를 클릭하십시오. 나는 대부분을 고칠 수 있었지만 그중 두 개 (비교되는 항목에 따라 더 많음)는 여전히 바닥에 이상하고 신비한 ~ 20px 여백이 있습니다. 창 크기를 조정할 때 팝업 크기를 변경했기 때문에 창 크기를 조정하면 사라집니다.
jurchiks

3

창 스크롤바로 스크롤되는 영역의 실제 스크롤 가능 높이를 얻으려면 $('body').prop('scrollHeight'). 이것은 가장 간단한 작업 솔루션 인 것처럼 보이지만 호환성을 광범위하게 확인하지 않았습니다. Emanuele Del Grande는 이것이 아마도 8 이하의 IE에서는 작동하지 않을 것이라고 다른 솔루션에 대해 언급합니다.

대부분의 다른 솔루션은 스크롤 가능한 요소에 대해 잘 작동하지만 이는 전체 창에서 작동합니다. 특히, 그, 즉, ANKIT의 솔루션을 마이클과 같은 문제가 있었다 $(document).prop('scrollHeight')반환합니다 undefined.


1

이 시도:

var scrollHeight = $(scrollable)[0] == document ? document.body.scrollHeight : $(scrollable)[0].scrollHeight;

0

예를 들어 이것을 시도해 볼 수 있습니다.이 코드는 모든 DIV 태그의 하단에 스크롤바를 놓습니다.

기억하세요 : jQuery는 값 대신 함수를 인수로받을 수 있습니다. "this"는 jQuery가 처리하는 객체이며, 함수는 현재 DIV "this"의 scrollHeight 속성을 반환하고 문서의 모든 DIV에 대해 수행합니다.

$("div").scrollTop(function(){return this.scrollHeight})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.