2012-04-16 6 views
26

Mam kilka obliczeń, które polegają na window.innerHeight. Ale jak się dowiedziałem, nie jest to dostępne w żadnym IE przed IE9. Wszystkie inne opcje, na które patrzyłem, nawet nie zbliżają się do liczby, którą otrzymuję, gdy używam window.innerHeight.window.innerHeight ie8 alternatywa

Czy ktoś ma pracę dookoła?

+2

problem ten został rozwiązany w kilku bibliotekach przykład [jQuery] (http://jquery.com) [prototyp] (http://prototypejs.org) [YUI] (http://developer.yahoo.com/yui/), [Zamknięcie] (http://code.google.com/closure/library) lub [dowolne z kilku innych] (http://en.wikipedia.org/wiki/List_of_Java Script_libraries). Zamiast samodzielnie rozwiązywać problemy, możesz rozważyć wykorzystanie pracy innych, abyś mógł skoncentrować się na pisaniu kodu, który jest odpowiedni do twoich wymagań. Ewentualnie zobacz, jak to robią i użyj tego kodu, nawet jeśli nie korzystasz z biblioteki. –

+2

To zostało odebrane przed jakiś czas temu. Sprawdź [to] (http://stackoverflow.com/questions/5864467/internet-explorer-innerheight) – AurA

+0

Z wyjątkiem tego, że iOS '$ (window) .height()' i 'window.innerHeight' zwracają różne wartości. Powiedziałbym więc, że problem nie został jeszcze rozwiązany w takich bibliotekach i nakazach. – cjbarth

Odpowiedz

48

Możecie też spróbować:

document.documentElement.clientHeight; 

Można użyć jQuery's .height() metody:

$(window).height(); 
+5

+1 'document.body.clientHeight' nie działał dla mnie we wszystkich scenariuszach, ale znalazłem' $ (window) .height() ', aby był niezawodny – BornToCode

+4

todo: przeczytaj o' document.documentElement.clientHeight' – Dan

+4

Dan ma rację, prawdziwym odpowiednikiem '$ (window) .height()' jest 'document.documentElement.clientHeight', a nie' document.body.clientHeight'. Oto testowanie skrzypiec: http://jsfiddle.net/tzdcx/1/ lub http://jsfiddle.net/tzdcx/1/show (działa dobrze z IE7 i wyżej) – Stano

14

Zrobiłem prostą podkładkę dla IE8 i inni:

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

559 bajtów

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

Dla aktualizacji, przyjrzeć się tej GIST: 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

Jest to niezwykle przydatne! Dziękuję Ci! – Luc

1

Javascript metoda, aby uzyskać pełną wysokość okna ..:

window.outerHeight; 

metody JavaScript, żeby uzyskać pełną wysokość dokumentu ..:

document.body.clientHeight; 

lub

document.body.offsetHeight; 

metody JavaScript, żeby uzyskać widoczną powierzchnia wysokość dokument ..:

to wysokość okna bez barów.

window.innerHeight; 

metody jQuery uzyskać widoczną powierzchnia wysokość dokumentu i okno bez barów powierzchnia wysokość zbyt ..:

$(window).height(); 

lub

$(window).outerHeight(); 

metod jQuery, aby uzyskać pełną wysokość dokumentu ..:

$(document).height(); 

lub

$(document).outerHeight(); 

to wszystko, mam nadzieję, że pomoże :)

3

używać następujących w document.ready i zdefiniować innerHeight wyraźnie.

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

Szukałem na ponieważ żaden z zamieszczonych tu funkcji wydawało się do pracy, zawsze dostał windowviewheight nie dokumentów pełna wysokość ...

to działa we wszystkich przeglądarkach Przetestowałem ... również 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

Gdzie wszystko inne zawiodło, to dostałem to dla mnie. Dzięki! –