当前位置: 代码迷 >> Web前端 >> document.compatMode 基准兼容模式,准确的获取浏览器客户区宽度
  详细解决方案

document.compatMode 基准兼容模式,准确的获取浏览器客户区宽度

热度:87   发布时间:2012-09-21 15:47:26.0
document.compatMode 标准兼容模式,准确的获取浏览器客户区宽度

可能有很多朋友和我有同样经历,一个网页中的正常的、“完美”的JS代码,放到另一个网页中就变得不那么完美了。这问题很奇怪,最后找到原因,是因为一个网页有标准声明,另一个没有。

????document.compatMode,可以用来判断当前页面采用的渲染方式。下面官方文档的说明:
BackCompat:标准兼容模式关闭。
CSS1Compat:标准兼容模式开启。

当document.compatMode等于BackCompat时,浏览器客户区宽度是document.body.clientWidth;
当document.compatMode等于CSS1Compat时,浏览器客户区宽度是document.documentElement.clientWidth。

浏览器客户区高度、滚动条高度、滚动条的Left、滚动条的Top等等都是上面的情况。

经我研究和多次测试后,写了个准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top的代码:

if (document.compatMode == "BackCompat") {
???cWidth = document.body.clientWidth;
???cHeight = document.body.clientHeight;
???sWidth = document.body.scrollWidth;
???sHeight = document.body.scrollHeight;
???sLeft = document.body.scrollLeft;
???sTop = document.body.scrollTop;
}
else { //document.compatMode == "CSS1Compat"
???cWidth = document.documentElement.clientWidth;
???cHeight = document.documentElement.clientHeight;
???sWidth = document.documentElement.scrollWidth;
???sHeight = document.documentElement.scrollHeight;
???sLeft = document.documentElement.scrollLeft == 0 ? document.body.scrollLeft : document.documentElement.scrollLeft;
???sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop;
}

  相关解决方案