使用javascript检测宽屏幕上的浏览器客户端区域大小
我多年来一直使用下面的代码来检测浏览器客户端区域宽度,它对所有浏览器都 100% 有效,包括 FF、Safari 和各种版本的 IE。但是,现在当我切换到宽屏分辨率 (1280x800) 的新显示器时,此代码在 IE8 上失败。它报告 clientwidth 为 1024 !!!???
有什么想法如何获得正确的客户区宽度吗?
function getClientWidth() {
var v=0,d=document,w=window;
if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientWidth)
{v=d.documentElement.clientWidth;}
else if(d.body && d.body.clientWidth)
{v=d.body.clientWidth;}
else if(xDef(w.innerWidth,w.innerHeight,d.height)) {
v=w.innerWidth;
if(d.height>w.innerHeight) v-=16;
}
return v;
}
I've been using the following code to detect browser client area width for ages and it worked 100% with all browsers, including FF, Safari and various versions of IE. However, now when I switched to a new monitor with widescreen resolution (1280x800) this code fails on IE8. It reports clientwidth of 1024 !!!???
Any ideas how to get the correct client area width ?
function getClientWidth() {
var v=0,d=document,w=window;
if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientWidth)
{v=d.documentElement.clientWidth;}
else if(d.body && d.body.clientWidth)
{v=d.body.clientWidth;}
else if(xDef(w.innerWidth,w.innerHeight,d.height)) {
v=w.innerWidth;
if(d.height>w.innerHeight) v-=16;
}
return v;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我前段时间使用的非jquery代码:
Non-jquery code I used some time ago:
代码中检查
window.opera
并减去 16 像素的位令人担忧。 comp.lang.javascript 的常见问题解答有一个很好的实现。The bits in your code where you check for
window.opera
and subtract 16 pixels are worrying. comp.lang.javascript's FAQ has a decent implementation of this.