¿Por qué Firefox devuelve 0 como el valor de $ (ventana) .height ()

Me parece que Firefox debería estar mejor equipado para devolver el valor adecuado cuando se usa $(window).height() .

Estoy usando jQuery 1.8.2. ¿Es este un error en esa construcción en particular? Todos los demás navegadores que he probado devuelven un valor apropiado al calcular la altura de la ventana gráfica.

Para solucionar esto, he usado el recorte a continuación para aplicar un valor de píxel a un div.

 $(window).bind('cwsObjectsShown', function() { var height = $(window).height(); if (height === 0) { height = window.innerHeight; } height = height - '120'; $('#game_objects').css('height', height + 'px'); }); 

$ jQuery (ventana) .height () es sensible a doctype. Prueba ?

Las notas de lanzamiento de jQuery 1.8.1 dicen

¡No uses el modo Quirks! jQuery nunca ha soportado el modo Quirks y no realizamos ninguna prueba en Quirks. Esto puede afectar a valores como $ (“window”). Height (), y los resultados del modo jQuery 1.8 Quirks cambiaron para admitir algunas características modernas del navegador. La mayoría de los casos de problemas que hemos visto provienen de desarrolladores que querían estar en el modo Estándar, pero tenían un tipo de documento o marca extraña no válido antes de su etiqueta. En caso de duda, utilice el simple y breve.

Por ejemplo, con jQuery 1.8.2 y Firefox 16, obtengo un $ (window) .height () válido con doctype html, pero alto 0 con doctype html5. En el cromo 20, ambos trabajan. (La especificación de W3C HTML5 dice usar doctype html, no html5).

Prueba esta función:

 function GetBrowserDim() { if (window.innerHeight) { return { w: window.innerWidth, h: window.innerHeight}; } else { return { w: document.body.clientWidth, h: document.body.clientHeight }; } } 

en mi caso tuve que borrar los atributos en el elemento html

  

cambiado a solo

  

Ahora obtengo la anchura y altura correctas del documento

$ (window) .height () y también $ (window) .width () devuelven 0 en IE cuando está en modo de compatibilidad. No verifique esto en FireFox, puede ser el mismo. intente usar $ (documento) .height () o $ (documento) .width () en su lugar.

Encontré la respuesta a este extraño render de altura de jquery en Firefox …

Usé class = “no-js” en mi etiqueta html con doctype … cuando eliminé esto, FF calculó correctamente … así que agregué esta clase con jquery como este $ (‘html’). AddClass (‘no- js ‘);

Ahora el calibrado es igual en todos los navegadores.

Prueba el siguiente código:

 $(function(){ $(window).on('cwsObjectsShown', function() { alert($(this).height()); }); });