En todo navegador reciente:¿Cómo consigo innerWidth en Internet Explorer 8
window.innerWidth // 1920
En Internet Explorer 8
window.innerWidth // undefined
¿Cuál es la mejor manera de conseguir este valor en IE8?
En todo navegador reciente:¿Cómo consigo innerWidth en Internet Explorer 8
window.innerWidth // 1920
En Internet Explorer 8
window.innerWidth // undefined
¿Cuál es la mejor manera de conseguir este valor en IE8?
El innerWidth
es apoyado por IE9 no IE8, puede hacerlo insteaad:
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
La línea anterior le dará el ancho de IE, así como otros navegadores compatibles con el estándar.
Si utiliza jQuery, $(window).innerWidth()
le dará resultado deseado en todos los navegadores también.
'$ (ventana) .innerWidth()' no devuelve el mismo número que 'window.innerWidth' si la barra de desplazamiento vertical está visible en la página. –
.innerWidth() no es aplicable a los objetos de ventana y documento, como se menciona en la documentación de jquery. http://api.jquery.com/innerWidth/ "Este método no es aplicable a objetos de ventana y documento; para estos, use .width() en su lugar". –
Necesitaba 'document.body.clientWidth' incluso en IE9 (peculiaridades) – jan
Usted puede obtener esta información de IE 8 con
document.documentElement.clientWidth
tenga en cuenta que este valor no será exactamente el mismo que IE 9 vuelve para window.innerWidth
.
Sin jQuery puede probar esto para conseguir height
y width
var myWidth = 0, myHeight = 0;
if (typeof (window.innerWidth) == 'number') { //Chrome
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { //IE9
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
El comentario 'Chrome' es engañoso ya que esta propiedad es compatible con todos los navegadores modernos: https://developer.mozilla.org/en-US/docs/Web/API/window.innerWidth?redirectlocale=en-US&redirectslug=DOM% 2Fwindow.innerWidth # Browser_compatibility ... incluyendo IE9 que hace obsoleto el 'else if'. – retrovertigo
¿Has leído la pregunta? OP ha solicitado un código que funcionará para IE8 –
déjenme reformular "... que hace que el segundo 'else if' obsoleto". – retrovertigo
document.documentElement.clientWidth;
Esto se utiliza para IE8 para obtener el cliente ancho
para IE8 uso
document.documentElement.clientWidth
favor Nota: El método .innerWidth no es aplicable a los objetos de ventana y documento; para estos, use .width() en su lugar.
Sé que tiene aproximadamente un año ... pero OP no usa jQuery ... –
Para conseguir esto, sigo usando:
window.innerWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
window.innerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
Pero para imitar el verdadero dom-comprador echar un vistazo a esto: https://stackoverflow.com/a/18136089/1250044
Sé que el innerWidth
no podría ser lo mismo, pero getBoundingClientRect
también se podría utilizar en una capacidad similar:
elem = document.documentElement.getBoundingClientRect();
width = elem.getBoundingClientRect().right - elem.getBoundingClientRect().left;
¿Ha explorado [jQuery] (http://jquery.com)? Es muy fácil hacer esto usándolo. –
sí seguro, $ (ventana) .innerWidth() también funciona bien en IE8, gracias – antonjs
@AntoJs '$ (ventana) .innerWidth()' no devuelve el mismo número que 'window.innerWidth' si la barra de desplazamiento vertical es visible en la página. –