如何在Internet Explorer 8中获取innerWidth

在最近的浏览器中:

window.innerWidth // 1920 

在Internet Explorer 8中

  window.innerWidth // undefined 

在IE8中获得这个值的最好方法是什么?

innerWidth是由IE9而不是IE8支持的,你可以这样做insteaad:

 var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 

上面的行会从IE以及其他符合标准的浏览器中获得宽度。


如果你使用jQuery, $(window).innerWidth()会在所有浏览器中给你想要的结果。

为了得到这个,我仍然使用:

 window.innerWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; window.innerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; 

但要模仿真正的dom-getter看看这个: https : //stackoverflow.com/a/18136089/1250044

为ie8使用

 document.documentElement.clientWidth 

我知道innerWidth可能不完全相同,但getBoundingClientRect也可以用于类似的容量:

 elem = document.documentElement.getBoundingClientRect(); width = elem.getBoundingClientRect().right - elem.getBoundingClientRect().left; 

你可以从IE 8获得这个信息

 document.documentElement.clientWidth 

请注意,这个值与IE 9针对window.innerWidth返回的值不完全相同。

没有jQuery,你可以尝试这个来获得heightwidth

 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; } 
 document.documentElement.clientWidth; 

这是用于ie8获取客户端的宽度

请注意:.innerWidth方法不适用于窗口和文档对象; 对于这些,请使用.width()来代替。

.inner()的jquery api文档