2011-04-24 11 views
17

Estoy tratando de tener diferentes comportamientos de navegador dependiendo de la altura de la ventana. Lo que quiero es si el usuario está en una netbook, mi script simplemente activará css overflow-y a 'auto', por lo que si el contenido es más grande que el usuario de la pantalla puede ver todo. si el usuario está en una pantalla grande, quiero tener el desbordamiento oculto y simplemente tener mi div principal con overflow = 'auto', por lo que el pie de página puede estar en la parte inferior de la pantalla, pero el contenido también puede verse si es más grande que la pantalla.

publicar el código básico para esto, funciona en pantallas gigantes en Mac, pero en Internet Explorer no es así, ya sea en las pantallas grandes o pequeños ...

qué hacer?

Gracias por la ayuda de antemano

CSS

html, body { 
    min-width: 600px; 
    margin: 0; 
    padding: 0; 
    overflow: hidden; 
} 
#header { 
    position:relative; /* IE7 overflow bug */ 
    clear:both; 
    float:left; 
    width:100%; 
    height: 200px; 
    overflow: hidden; 
} 
#main { 
    position:relative; /* IE7 overflow bug */ 
    clear:both; 
    float:left; 
    width:100%; 
    overflow-x: hidden; 
} 
#footer { 
    position:relative; /* IE7 overflow bug */ 
    clear:both; 
    float:left; 
    width:100%; 
    height: 100px; 
    overflow: hidden; 
} 

jQuery

if(typeof(window.innerWidth) == 'number') { 
    // No-IE 
    var screen_height = window.innerHeight; 
} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { 
    //IE 6 + 
    var screen_height = document.documentElement.clientHeight; 
} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) { 
    //IE 4 
    var screen_height = document.body.clientHeight; 
} 

var header_height = $('#header').height(); 
var footer_height = $('#footer').height(); 
var main_height = screen_height - header_height - footer_height; 
// 
if (navigator.userAgent.toLowerCase().search("iphone") > -1 || navigator.userAgent.toLowerCase().search("ipod") > -1) { 
    $('body').css('overflow-y', 'auto'); 
} else { 
    if(screen_height > 550) { 
     $('#main').css('height', main_height + 'px'); 
$('#main').css('overflow-y', 'auto'); 
    } else { 
     $('html, body').css('overflow-y', 'auto'); 
    } 
} 
+0

¿Qué ocurre exactamente o no en IE ? –

+0

Hola, en el desbordamiento de IE siempre está oculto, por lo que no puedo ver todo el contenido. Prueba en IE 7, 8 y 9. Gracias. – Pluda

+0

¿Pasa algo si te deshaces de lo importante? – Vervious

Respuesta

35
$('html, body').css('overflowY', 'auto'); 

resuelve este problema.

+0

¿Qué pasó con el guión: se omitió intencionalmente, o es un error tipográfico? – SamB

+1

Eso es IE para usted –

8

Inténtelo con overflowY:

$('body').css('overflowY', 'auto'); 

Los guiones en los nombres de atributos ty pically no funciona cuando se establece con JavaScript, especialmente en IE.

Espero que funcione.

+0

simplemente agregando $ ('html') funciona como un amuleto, he actualizado el código inicial para futuros buscadores sobre esto, pero no encuentro dónde decir la pregunta resuelta :-( – Pluda

+0

¡Me alegro de que funcionó! Debería haber un enlace para aceptar la respuesta correcta debajo de ella. – clmarquart

Cuestiones relacionadas