如何在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,你可以尝试这个来获得height
和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; }
document.documentElement.clientWidth;
这是用于ie8获取客户端的宽度
请注意:.innerWidth方法不适用于窗口和文档对象; 对于这些,请使用.width()来代替。
.inner()的jquery api文档