2009-07-06 48 views
11

Tôi đang cố nâng tổng chiều cao của một trang bằng JavaScript và jQuery để tôi có thể kiểm tra xem trang có đủ dài để hiển thị gì không, tuy nhiên trong thử nghiệm của tôi, tôi không thể nhận được tổng chiều cao của một trang.Tổng chiều cao của trang

Tôi đã xem xét trên Internet nhưng những thứ như thế này dường như không được tài liệu tốt, vì tất cả những gì tôi có thể tìm thấy là scrollHeight, như tôi có thể đề cập, không hoạt động.

Bất kỳ cách nào để sử dụng jQuery để tìm?

Trả lời

31

Nếu không có một khuôn khổ:

var _docHeight = (document.height !== undefined) ? document.height : document.body.offsetHeight; 
var _docWidth = (document.width !== undefined) ? document.width : document.body.offsetWidth; 
9

Bạn đã thử $(document).height(); chưa?

Demo here

+0

Điều đó gây ra lỗi. –

+0

hoạt động cho tôi http://pastebin.me/4a52303ca45de - đảm bảo bạn có giao diện điều khiển firefox + firebug mở – redsquare

0

Có một cái nhìn tại documentation. Một trong những phương thức được hỗ trợ: height, innerHeight, outerHeight có thể phù hợp với bạn.

1

Có lẽ sử dụng vị trí của một phần tử ở dưới cùng của trang, như:

$("#footer").offset().top 
2

Chiều cao của toàn bộ trang ...

document.body.offsetHeight 

Chiều cao của chế độ xem ...

var h; 

if(self.innerHeight) 
    h = window.innerHeight 
else if(document.documentElement && document.documentElement.clientHeight) 
    h = document.documentElement.clientHeight; 
else if(document.body) 
    h= document.body.clientHeight; 

This article có thể giúp bạn.

5

document.documentElement.scrollHeight đang hoạt động tốt với tôi trong phiên bản Internet Explorer, Chrome, Firefox và Safari mới nhất.

+0

đây là công cụ duy nhất hoạt động cho tôi – ekcrisp

+0

scrollHeight sẽ cung cấp cho bạn chiều cao của trang bao gồm nội dung bạn cần để cuộn nhìn. offsetHeight sẽ cung cấp cho bạn chiều cao của khu vực nội dung cửa sổ hiển thị. – pelms

+0

và 'offsetHeight' không chứa đường viền, lề và đệm. –

1

Để tìm chiều cao của toàn bộ tài liệu bạn chỉ có thể tìm thấy những Node DOM cao nhất trên trang hiện tại với một đệ quy đơn giản:

;(function() { 
    var pageHeight = 0; 

    function findHighestNode(nodesList) { 
     for (var i = nodesList.length - 1; i >= 0; i--) { 
      if (nodesList[i].scrollHeight && nodesList[i].clientHeight) { 
       var elHeight = Math.max(nodesList[i].scrollHeight, nodesList[i].clientHeight); 
       pageHeight = Math.max(elHeight, pageHeight); 
      } 
      if (nodesList[i].childNodes.length) findHighestNode(nodesList[i].childNodes); 
     } 
    } 

    findHighestNode(document.documentElement.childNodes); 

    // The entire page height is found 
    console.log('Page height is', pageHeight); 
})(); 

LƯU Ý: Nó đang làm việc với Iframes.

Tận hưởng!

Các vấn đề liên quan