2010-08-04 29 views

Trả lời

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

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

Tôi đã thinkig theo cùng một cách, nhưng tại sao console.log ($ (this) .scrollTop()) = 1187 console.log ($ (this) .height()) = 1762 nó khác nhiều? Đối với 575px nếu tôi đã cuộn xuống cuối trang. 575px ở đâu? Thanh cuộn không thể là 576px :) – Somebody

+3

Baaah một lần nữa lỗi của tôi. Tôi đã nhìn vào thanh cuộn với cửa sổ firebug đã mở. Ofc, giờ đây có thể là 576px. :) Cảm ơn tôi đoán chủ đề đã bị đóng. – Somebody

+100

-1 - Điều đó rất hay, nhưng không trả lời câu hỏi, đó là về 'scrollHeight'. –

3

Something như thế này nên giải quyết vấn đề của bạn:

$.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()); 

Ps: Gọi chức năng rằng mỗi khi bạn cần đến nó, cảnh báo là dành cho mục đích thử nghiệm ..

+0

Vì lý do nào đó chức năng này không hoạt động chính xác cho tôi; sử dụng nó bên trong khung nội tuyến. Chiều cao thực tế của là 256px, chức năng này mang lại cho tôi 337px và tôi không biết nó đến từ đâu. P.S. Tôi đang sử dụng Chrome 18. – jurchiks

+0

@jurchiks: Bạn có liên kết đến iframe đó ở đâu, để tôi xem? – Zuul

+0

https://www.blade.dateks.lv/salidzinat?ids=58664,43586. Nhấp vào bất kỳ dấu hỏi nào. Tôi đã cố gắng khắc phục tối đa nó nhưng hai trong số đó (và có nhiều tùy thuộc vào các mục được so sánh) vẫn có một số lợi nhuận kỳ lạ ~ bí ẩn ~ 20px ở dưới cùng. Nó biến mất khi tôi thay đổi kích thước cửa sổ mặc dù, bởi vì tôi đã làm cho nó thay đổi kích thước popup trên cửa sổ thay đổi kích cỡ. – jurchiks

6
document.getElementById("elementID").scrollHeight 

$("elementID").scrollHeight 
+0

vì vậy Id phần tử của đối tượng tài liệu của bạn là gì? ... có lẽ bạn có nghĩa là "document.body.scrollHeight"? – BrainSlugs83

+2

$ ('# gallery'). ScrollHeight cho tôi không xác định // # gallery là id tràn của tôi: phần tử tự động, không hoạt động –

176

Sau đây là cách để có được scrollHeight của một phần tử thu được bằng cách sử dụng bộ chọn jQuery:

$(selector)[0].scrollHeight 

Nếu selector là id của phần tử (ví dụ: elemId), đảm bảo rằng mục được đánh chỉ mục 0 của mảng sẽ là phần tử bạn muốn chọn và scrollHeight sẽ chính xác.

+12

Hãy cẩn thận, theo cơ sở kiến ​​thức Mozilla, nó không được hỗ trợ từ các phiên bản IE nhỏ hơn 8.0 https://developer.mozilla.org/en/DOM/element.scrollHeight –

+0

Chính xác như @EmanueleDelGrande nói: xem tại đây: http://www.quirksmode.org/dom/w3c_cssom.html - dành cho IE <8 DOM scrollHeight được triển khai nhưng không chính xác. Đối với tôi, nó hoạt động trong IE 6, 7 trên netrenderer nhưng có thể không hoạt động trong mọi trường hợp. – TMS

+2

Đồng ý với @Tomas, sử dụng tính trừu tượng của jQuery để xử lý tốt hơn các quirks trình duyệt chéo. Ví dụ ở trên có thể được sửa đổi thành $ (selector) .offset(). Top –

45

Nếu bạn đang sử dụng Jquery 1.6 trở lên, hãy sử dụng giá trị để truy cập giá trị.

$(document).prop('scrollHeight') 

Phiên bản trước được sử dụng để lấy giá trị từ attr nhưng không được đăng 1.6.

+12

Điều này trả về "không xác định" cho tôi với jQuery 1.7.1, cũng như $ (tài liệu) .attr ("scrollHeight"). – Michael

+5

Đó là bởi vì nó thiếu yếu tố cơ thể. Nó cần phải là $ (document.body) .prop ('scrollHeight') - tại thời điểm đó bạn cũng có thể sử dụng document.body.scrollHeight; – goddogsrunning

3

Để nhận chiều cao cuộn thực tế của các khu vực được cuộn bởi thanh cuộn cửa sổ, tôi đã sử dụng $('body').prop('scrollHeight'). Đây có vẻ là giải pháp làm việc đơn giản nhất, nhưng tôi chưa kiểm tra tính tương thích rộng rãi. Emanuele Del Grande lưu ý về một giải pháp khác có thể sẽ không hoạt động đối với IE dưới đây 8.

Hầu hết các giải pháp khác đều hoạt động tốt đối với các phần tử có thể cuộn, nhưng điều này làm việc cho toàn bộ cửa sổ. Đáng chú ý, tôi đã có cùng một vấn đề như Michael cho giải pháp Ankit, cụ thể là, $(document).prop('scrollHeight') đang trở về undefined.

6

Nó sử dụng các phần tử DOM HTML, nhưng không sử dụng bộ chọn jQuery. Nó có thể được sử dụng như:

var height = document.body.scrollHeight; 
-1

Hãy thử điều này:

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

Bạn có thể thử loại này ví dụ, mã này đặt thanh cuộn ở phía dưới cho tất cả các thẻ DIV

Hãy nhớ rằng: jQuery có thể chấp nhận hàm thay vì giá trị làm đối số. "this" là đối tượng được xử lý bởi jQuery, hàm trả về thuộc tính scrollHeight của DIV hiện tại "this" và làm điều đó cho tất cả DIV trong tài liệu.

$("div").scrollTop(function(){return this.scrollHeight}) 
Các vấn đề liên quan