`
caibinghong
  • 浏览: 151063 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

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;
}

分享到:
评论

相关推荐

    javascript document.compatMode兼容性

    例如,以下代码片段根据`document.compatMode`的值来获取页面客户区的宽度、高度以及滚动条的位置: ```javascript if (document.compatMode == "BackCompat") { // 在怪异模式下,使用body对象来获取尺寸和滚动...

    document.compatMode的CSS1compat使用介绍

    这段代码首先检查 `document.compatMode` 的值,如果为 `'CSS1Compat'`,则表示页面在标准模式下运行,否则是在Quirks Mode。然后,根据模式选择合适的元素(`document.documentElement` 或 `document.body`)来获取...

    document.compatMode介绍

    这段代码首先检查`document.compatMode`,如果在标准模式下,使用`document.documentElement.clientHeight`获取高度,否则使用`document.body.clientHeight`。这是因为IE在Quirks Mode下,高度是通过`document.body`...

    取得窗口大小 兼容所有浏览器的js代码.docx

    如果`document.compatMode`为"CSS1Compat",表示页面处于标准模式,那么宽度和高度应该通过`document.documentElement.clientWidth`和`document.documentElement.clientHeight`获取。否则,如果`document.compatMode...

    【JavaScript源代码】JavaScript获取网页的宽高及如何兼容详解.docx

    不过,`document.compatMode` 可以帮助我们判断当前文档是处于标准模式(CSS1Compat)还是怪异模式(BackCompat)。根据这个属性,我们可以编写兼容性代码: ```javascript if (document.compatMode === ...

    解决多种浏览器获取滚动条高度

    2. **选择正确的body或documentElement对象**:由于IE在标准模式和怪异模式下使用的对象不同,因此需要根据`document.compatMode`来决定使用哪个对象。 3. **获取滚动条位置**:对于IE浏览器,使用`IeTrueBody()....

    前端工程师笔试面试题

    9. 浏览器兼容性:浏览器的兼容性是一个重要的问题,需要考虑不同浏览器的差异,例如使用 `document.compatMode` 来判断浏览器的兼容性模式。 本文档涵盖了前端工程师笔试面试题的多个技术领域,包括 HTML、CSS、...

    由document.body和document.documentElement想到的

    综上所述,理解`document.body`和`document.documentElement`以及它们与`document.compatMode`的关系,能够帮助开发者更好地处理浏览器兼容性问题,特别是涉及到CSS布局和页面尺寸计算时。同时,熟悉各种尺寸属性和...

    jquery 得到当前页面高度和宽度的两个函数

    ### jQuery 获取当前页面高度和宽度的方法 在前端开发过程中,我们经常会...对于现代浏览器环境,推荐直接使用 `window.innerHeight` 和 `window.innerWidth` 来获取页面的高度和宽度,这种方法更为简洁且兼容性更好。

    用Javascript 获取页面元素的位置的代码

    document.documentElement.clientWidth和document.documentElement.clientHeight(在标准模式下)或document.body.clientWidth和document.body.clientHeight(在quirks模式下)可以用来获取浏览器视口的宽度和高度。...

    JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)

    接下来,我们关注另一个问题:获取浏览器视口的宽度和高度。这个功能在不同的浏览器中也有不同的实现。以下是一个兼容多种浏览器的函数: ```javascript function getPageWidth() { var pageWidth = window....

    面试题库.docx

    14. **浏览器标准模式与怪异模式**:标准模式遵循W3C标准,元素宽度仅包含内容宽度;怪异模式下,浏览器使用自己的非标准渲染规则,如IE盒模型。`window.top.document.compatMode`可检测当前模式。 以上知识点涵盖...

    浏览器常用高宽的jquery插件

    通过插件中的$.scrollLeft函数可以获取,对于在BackCompat模式下的浏览器或者是IE6及以下版本,使用Math.max方法获取body和documentElement的scrollLeft值中的较大者,而对于其他标准模式下的浏览器,则直接使用body...

    最新史上最全前端面试题(含答案).docx

    14. **浏览器标准模式与怪异模式**:标准模式遵循W3C标准,怪异模式(Quirks Mode)遵循老式浏览器的渲染规则。可以通过`window.top.document.compatMode`检测当前模式。 15. **网站资源优化**:文件合并减少HTTP...

    【JavaScript源代码】JavaScript实现返回顶部按钮.docx

    2. **兼容性考虑**:使用`getPageScroll`函数来兼容不同浏览器的滚动偏移量获取方式。 3. **UI交互**:可以进一步美化按钮样式,例如添加动画效果、改变按钮颜色等,提高用户体验。 4. **性能优化**:对于非常长的...

    浅谈JavaScript的innerWidth与innerHeight

    这段代码首先检查`window.innerWidth`和`window.innerHeight`是否可用,如果不支持,则根据浏览器的兼容模式(CSS1Compat表示标准模式)来获取文档元素或body元素的clientWidth和clientHeight,从而得到类似的效果。...

    史上最全前端面试题(含答案).docx

    14. **浏览器标准模式与怪异模式**:标准模式遵循W3C标准,怪异模式(Quirks Mode)模拟早期浏览器的非标准解析方式。可以通过`document.compatMode`判断。 15. **网站文件和资源优化**:文件合并减少HTTP请求,...

Global site tag (gtag.js) - Google Analytics