nmd*_*mdr 24 javascript css firefox internet-explorer-8 internet-explorer-7
属性document.body.clientHeight
并document.body.clientWidth
在IE7,IE8和Firefox上返回不同的值:
IE 8:
document.body.clientHeight : 704
document.body.clientWidth : 1148
Run Code Online (Sandbox Code Playgroud)
IE 7:
document.body.clientHeight : 704
document.body.clientWidth : 1132
Run Code Online (Sandbox Code Playgroud)
火狐:
document.body.clientHeight : 620
document.body.clientWidth : 1152
Run Code Online (Sandbox Code Playgroud)
为什么存在这种差异?
在不使用jQuery的情况下,是否存在在不同浏览器(IE8,IE7,Firefox)中保持一致的等效属性?
小智 24
Paul A对于存在差异的原因是正确的,但Ngm提供的解决方案是错误的(在JQuery意义上).
jquery(1.3)中的clientHeight和clientWidth相当于
$(window).width(), $(window).height()
Run Code Online (Sandbox Code Playgroud)
这与浏览器的盒子模型有关.使用类似jQuery或其他JavaScript抽象库的东西来规范化DOM模型.
该体元素将可用的宽度,这通常是你的浏览器窗口.因此,由于浏览器镀铬边框,滚动条,垂直空间被菜单占用等等,它将是跨浏览器的不同尺寸...
高度也变化的事实也告诉我你通过css 将body/html高度设置为100%,因为高度通常取决于体内的元素.
除非您通过css或它的样式属性将body元素的宽度设置为固定值,否则它的尺寸通常会改变跨浏览器/版本,甚至可能取决于您为浏览器安装的插件.在这种情况下,常量值更像是规则的例外......
当您在不采用浏览器视口的自动宽度的其他元素上调用.clientWidth时,它将始终返回元素'width'+'padding'.因此,宽度为200且填充为20的div将具有clientWidth = 240(左右填充20个).
然而,主要原因是,为什么会调用clientWidth,这正是由于结果可能存在预期的差异.如果你知道你将获得一个恒定的宽度并且值已知,那么调用clientWidth是多余的......
归档时间: |
|
查看次数: |
121441 次 |
最近记录: |