2012-04-16 15 views
26

Tôi có một số tính toán dựa trên window.innerHeight. Nhưng như tôi đã phát hiện ra điều này là không có sẵn trong bất kỳ trình duyệt IE trước IE9. Tất cả các tùy chọn khác tôi đã xem xét thậm chí không đến gần con số tôi nhận được khi tôi sử dụng window.innerHeight.window.innerHeight ie8 thay thế

Có ai có công việc xung quanh không?

+2

Sự cố này đã được giải quyết trong một số thư viện như [jQuery] (http://jquery.com), [Prototype] (http://prototypejs.org), [YUI] (http://developer.yahoo.com/yui/), [Đóng cửa] (http://code.google.com/closure/library) hoặc [bất kỳ số nào khác] (http://en.wikipedia.org/wiki/List_of_Java Script_libraries). Thay vì tự giải quyết nó, bạn có thể xem xét tận dụng công việc của người khác để bạn có thể tập trung vào viết mã cụ thể cho các yêu cầu của bạn. Cách khác, xem cách họ làm điều đó và sử dụng mã đó ngay cả khi bạn không sử dụng thư viện. –

+2

Điều này đã được trả lời trước một thời gian trước đây. Kiểm tra [this] (http://stackoverflow.com/questions/5864467/internet-explorer-innerheight) – AurA

+0

Ngoại trừ iOS '$ (cửa sổ) .height()' và 'window.innerHeight' trả về các giá trị khác nhau. Vì vậy, tôi sẽ nói rằng vấn đề vẫn chưa được giải quyết trong các thư viện và lệnh bảo đảm như vậy. – cjbarth

Trả lời

48

Bạn có thể muốn thử:

document.documentElement.clientHeight; 

Hoặc có thể sử dụng jQuery's .height() phương pháp:

$(window).height(); 
+5

+1 'document.body.clientHeight' không hoạt động với tôi trong mọi tình huống, nhưng tôi thấy' $ (window) .height() 'là đáng tin cậy – BornToCode

+4

todo: đọc về' document.documentElement.clientHeight' – Dan

+4

Dan là đúng, tương đương với '$ (window) .height()' là 'document.documentElement.clientHeight', không phải' document.body.clientHeight'. Đây là thử nghiệm fiddle: http://jsfiddle.net/tzdcx/1/ hoặc http://jsfiddle.net/tzdcx/1/show (hoạt động tốt với IE7 trở lên) – Stano

14

tôi đã thực hiện một shim đơn giản cho IE8 và những người khác:

  • window.innerWidth
  • window.innerHeight
  • window.scrollX
  • window.scrollY
  • document.width
  • document.height

559 byte

(function(d,b){var c=b.documentElement;var a=b.body;var e=function(g,h,f){if(typeof g[h]==="undefined"){Object.defineProperty(g,h,{get:f})}};e(d,"innerWidth",function(){return c.clientWidth});e(d,"innerHeight",function(){return c.clientHeight});e(d,"scrollX",function(){return d.pageXOffset||c.scrollLeft});e(d,"scrollY",function(){return d.pageYOffset||c.scrollTop});e(b,"width",function(){return Math.max(a.scrollWidth,c.scrollWidth,a.offsetWidth,c.offsetWidth,a.clientWidth,c.clientWidth)});e(b,"height",function(){return Math.max(a.scrollHeight,c.scrollHeight,a.offsetHeight,c.offsetHeight,a.clientHeight,c.clientHeight)});return e}(window,document)); 

Để cập nhật, hãy nhìn vào ý chính sau: yckart/9128d824c7bdbab2832e

(function (window, document) { 

    var html = document.documentElement; 
    var body = document.body; 

    var define = function (object, property, getter) { 
    if (typeof object[property] === 'undefined') { 
     Object.defineProperty(object, property, { get: getter }); 
    } 
    }; 

    define(window, 'innerWidth', function() { return html.clientWidth }); 
    define(window, 'innerHeight', function() { return html.clientHeight }); 

    define(window, 'scrollX', function() { return window.pageXOffset || html.scrollLeft }); 
    define(window, 'scrollY', function() { return window.pageYOffset || html.scrollTop }); 

    define(document, 'width', function() { return Math.max(body.scrollWidth, html.scrollWidth, body.offsetWidth, html.offsetWidth, body.clientWidth, html.clientWidth) }); 
    define(document, 'height', function() { return Math.max(body.scrollHeight, html.scrollHeight, body.offsetHeight, html.offsetHeight, body.clientHeight, html.clientHeight) }); 

    return define; 

}(window, document)); 
+0

Điều này cực kỳ hữu ích! Cảm ơn bạn! – Luc

1

Javascript phương pháp để có được chiều cao cửa sổ đầy đủ ..:

window.outerHeight; 

phương pháp Javascript để có được chiều cao đầy đủ tài liệu ..:

document.body.clientHeight; 

hoặc

document.body.offsetHeight; 

Phương pháp Javascript để xem chiều cao khu vực tài liệu hiển thị ..:

đây là chiều cao của cửa sổ không có thanh.

window.innerHeight; 

phương pháp jQuery để có được chiều cao khu vực tài liệu hiển thị và cửa sổ mà không cần thanh chiều cao khu vực quá ..:

$(window).height(); 

hoặc

$(window).outerHeight(); 

phương pháp jQuery để có được chiều cao đầy đủ tài liệu ..:

$(document).height(); 

hoặc

$(document).outerHeight(); 

đó là tất cả, tôi hy vọng sẽ giúp bạn :)

3

Sử dụng sau trong document.ready của bạn và xác định một cách rõ ràng innerHeight.

window.innerHeight = window.innerHeight || document.documentElement.clientHeight 
1

Tôi tìm kiếm trên vì không ai trong số các chức năng ở đây posted dường như làm việc, tôi luôn luôn có những windowviewheight không phải là tài liệu đầy đủ chiều cao ...

làm việc này trong tất cả các trình duyệt tôi đã thử nghiệm ... cũng iexplore 8:

var D = document; 
var myHeight = Math.max(
    D.body.scrollHeight, D.documentElement.scrollHeight, 
    D.body.offsetHeight, D.documentElement.offsetHeight, 
    D.body.clientHeight, D.documentElement.clientHeight 
); 

alert(myHeight); 
+0

Trường hợp mọi thứ khác thất bại, điều này đã cho tôi. Cảm ơn! –