2012-04-16 12 views
26

Tengo algunos cálculos que se basan en window.innerHeight. Pero como descubrí, esto no está disponible en ningún IE antes de IE9. Todas las otras opciones que he visto ni siquiera se acercan a la figura que obtengo cuando uso window.innerHeight.window.innerHeight ie8 alternative

¿Alguien tiene un trabajo?

+2

Este problema se ha resuelto de varias bibliotecas tal como [jQuery] (http://jquery.com), [Prototype] (http://prototypejs.org), [YUI] (http://developer.yahoo.com/yui/), [Closure] (http://code.google.com/closure/library), o [cualquiera de varios otros] (http://en.wikipedia.org/wiki/List_of_Java Script_libraries). En lugar de resolverlo usted mismo, podría considerar aprovechar el trabajo de los demás para que pueda concentrarse en escribir un código que sea específico para sus requisitos. Alternativamente, vea cómo lo hacen y use ese código incluso si no usa la biblioteca. –

+2

Esto fue respondido antes hace algún tiempo. Marque [this] (http://stackoverflow.com/questions/5864467/internet-explorer-innerheight) – AurA

+0

Excepto que iOS '$ (ventana) .height()' y 'window.innerHeight' devuelven valores diferentes. Entonces, yo diría que el problema aún no se ha resuelto en esas bibliotecas y merece la pena preguntar. – cjbarth

Respuesta

48

Es posible que desee probar:

document.documentElement.clientHeight; 

O puede utilizar jQuery's .height() método:

$(window).height(); 
+5

+1 'document.body.clientHeight' no funcionó para mí en todos los escenarios, pero encontré' $ (ventana) .height() 'para ser confiable – BornToCode

+4

todo: lea sobre' document.documentElement.clientHeight' – Dan

+4

Dan es correcto, el equivalente real a '$ (ventana) .height()' es 'document.documentElement.clientHeight', no el' document.body.clientHeight'. Aquí está probando el violín: http://jsfiddle.net/tzdcx/1/ o http://jsfiddle.net/tzdcx/1/show (funciona bien con IE7 y superior) – Stano

14

Hice una cuña sencilla para IE8 y otros:

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

559 bytes

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

Para actualizaciones, echar un vistazo a este 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)); 
método
+0

¡Esto es extremadamente útil! ¡Gracias! – Luc

1

Javascript para obtener alto de la ventana ..:

window.outerHeight; 

métodos JavaScript para obtener la altura documento completo ..:

document.body.clientHeight; 

o

document.body.offsetHeight; 

Métodos de JavaScript para obtener la altura del área del documento visible ..:

esta es la altura de la ventana sin barras.

window.innerHeight; 

métodos jQuery para obtener la altura área del documento visible y ventana sin barras de altura área también ..:

$(window).height(); 

o

$(window).outerHeight(); 

métodos jQuery para obtener la altura documento completo ..:

$(document).height(); 

o

$(document).outerHeight(); 

eso es todo, espero que le ayudará a :)

3

uso siguiente en su document.ready y definir explícitamente innerHeight.

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

He buscado en porque ninguna de las funciones aquí publicados parecía funcionar, siempre me dieron la windowviewheight no los documentos de altura completa ...

esto funciona en todos los navegadores que he probado ... también 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

Donde todo lo demás falló, esto lo tengo para mí. ¡Gracias! –