前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >document.compatMode属性介绍

document.compatMode属性介绍

作者头像
吴裕超
发布于 2018-02-28 03:18:57
发布于 2018-02-28 03:18:57
9730
举报
文章被收录于专栏:吴裕超吴裕超

之前不了解这个属性,今天总结一下,以后可能会用到。

对于document.compatMode,很多朋友可能都根我一样很少接触,知道他的存在却不清楚他的用途。今天在ext中看到 document.compatMode的使用,感觉这个对于我们开发兼容性的web页面还是很有帮助,我们都知道,IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有很大差别,而在不声明Doctype的情况下,IE默认又是Quirks Mode。所以为兼容性考虑,我们可能需要获取当前的文档渲染方式。

      document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat,对其解释如下:

BackCompat Standards-compliant mode is not switched on. (Quirks Mode)

CSS1Compat Standards-compliant mode is switched on. (Standards Mode)

     在实际的项目中,我们还需要在获取浏览是否IE,这样就可以得到IE的渲染模式了。在Ext中的代码:isBorderBox=isIE&&!isStrict。

当文档有了标准声明时, document.compatMode 的值就等于 "CSS1compat", 因此, 我们可以根据 document.compatMode 的值来判断文档是否加了标准声明

var height = document.compatMode=="CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight;

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

(以上代码兼容目前流行的全部浏览器,包括:IE、Firefox、Safari、Opera、Chrome)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-12-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
document.compatMode的CSS1compat
document.compatMode BackCompat:标准兼容模式关闭。浏览器宽度:document.body.clientWidth; CSS1Compat:标准兼容模式开启。 浏览器宽度:
deepcc
2018/05/16
7150
用Javascript获取页面元素的位置
制作网页的过程中,你有时候需要知道某个元素在网页上的确切位置。 下面的教程总结了Javascript在网页定位方面的相关知识。 一、网页的大小和浏览器窗口的大小 首先,要明确两个基本概念。 一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和CSS样式表决定。 浏览器窗口的大小,则是指在浏览器窗口中看到的那部分网页面积,又叫做viewport(视口)。 很显然,如果网页的内容能够在浏览器窗口中全部显示(也就是不出现滚动条),那么网页的大小和浏览器窗口的大小是相等的。如果不能全部显示,则滚动浏览器
ruanyf
2018/04/12
3.3K0
JavaScript笔记
因为IE浏览器下不支持年月日日之间有横线连接的形式,所以在IE浏览器下做日期格式化时,需要用下面的正则表达式先将 横线转换成斜线,例如将2019-12-31 10:48:30 转成 2019/12/31 10:48:30
用户3880999
2023/04/13
2600
JavaScript笔记
第49天:封装自己的scrollTop
scrollTop和scrollLeft scrollTop 被卷去的头部 当滑动滚轮浏览网页的时候,网页隐藏在屏幕上方的距离 二、页面滚动效果事件 window.onscroll=function(){页面滚动语句} 三、获取scrollTop 谷歌和没有声明DTD<DOCTYPE>:document.body.scrollTop 火狐和其他浏览器:document.documentElement.scrollTop IE9+和最新浏览器:window.pageXOffset; pageYOffset(scrollTop) 兼容性写法: var scrollTop=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;
半指温柔乐
2018/09/11
6640
偏移量、客户区大小、视口大小、滚动大小、确定元素大小
1、偏移量 先讲几个偏移量属性: offsetHeight:元素在垂直方向上占用的空间大小;相当于border-top+padding-top+height+padding-bottom+border-bottom offsetWidth:元素在水平方向上占有的空间大小;相当于botder-left+padding-left+width+padding-right+border+right offsetLeft:元素的左外边框至包含元素的左内边框之间的像素距离。 offsetTop:元素的上外边框至包含元素的上内边框之间的像素距离。
Ewall
2018/09/04
1.5K0
浏览器兼容base.js
window.pageYOffset : 谷歌浏览器 document.documentElement.scrollTop :ie 和其他浏览器 document.body.scrollTop : 火狐浏览器
天天Lotay
2022/12/01
1.7K0
offsetHeight, clientHeight与scrollHeight的区别
在网上搜了一下,结论非常笼统,讲IE从不讲版本,因此自己做了测试并上传结论。以下结论皆是在标准模式下测试通过的,没有测试quirk模式。
全栈程序员站长
2022/09/15
9200
js获取网页屏幕可视区域高度
document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.documentElement.clientWidth ==> 可见区域宽度 document.documentElement.clientHeight ==> 可见区域高度
kirin
2020/12/23
9.6K0
js获取网页屏幕可视区域高度
常用的AJAX弹出层代码
Code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <titl
菩提树下的杨过
2018/01/22
1.4K0
获取不同手机浏览器的实际可用高度代码分享
但是不同手机浏览器有自己的地址栏、状态栏等,window.screen.availHeight 取到的屏幕高度也包括了这两者,导至本来希望满屏显示的内容出现滚动条,需要滑动才能看到。 
德顺
2019/11/13
2.3K0
整理获取 viewport 和 element 尺寸和位置方法
返回整个页面的滚动的位置,pageYOffset/pageXOffset 与 scrollY/scrollX 返回的值一致,前者是后者的别名,建议使用前者,不支持 IE8
JS菌
2019/04/23
1.3K0
整理获取 viewport 和 element 尺寸和位置方法
移动端滚动加载-----jQuery 和 原生JS
从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为('body').scrollTop() +(window).height() ==
Rattenking
2021/01/29
22.3K0
详解各种获取元素宽高及位置的属性
offsetWidth / offsetHeight offsetWidth HTMLElement.offsetWidth 是一个只读属性,返回一个元素的布局宽度。一个典型的(各浏览器的offset
laixiangran
2018/04/24
4K0
详解各种获取元素宽高及位置的属性
前端day15-JS(WebApi)学习笔记(三大家族、事件对象、getComputedStyle)
offsetWidth、offsetHeight、offsetParent、offsetLeft、offsetTop
帅的一麻皮
2020/05/04
7030
前端day15-JS(WebApi)学习笔记(三大家族、事件对象、getComputedStyle)
第52天:offset家族、scroll家族和client家族的区别
一、offset家族 1、offsetWidth offsetHeight offsetLeft offsetTop offsetParent共同组成了offset家族,用来获取元素尺寸。 offsetWidth = width + padding + border offsetHeight = height + padding + border 2、offsetLeft 和 offsetTop: 返回距离上级带有定位的盒子左边的位置,如果父级元素没有定位,则以body为准 offsetLeft从父亲的
半指温柔乐
2018/09/11
7850
第52天:offset家族、scroll家族和client家族的区别
JS 获取浏览器窗口大小clientWidth、offsetWidth、scrollWidth「建议收藏」
在我本地测试当中: 在IE、FireFox、Opera下都可以使用 document.body.clientWidth document.body.clientHeight 即可获得,很简单,很方便。 而在公司项目当中: Opera仍然使用 document.body.clientWidth document.body.clientHeight 可是IE和FireFox则使用 document.documentElement.clientWidth document.documentElement.clientHeight 原来是W3C的标准在作怪啊
全栈程序员站长
2022/09/16
7.5K0
JS 获取浏览器窗口大小clientWidth、offsetWidth、scrollWidth「建议收藏」
第51天:封装可视区域大小函数client
    offsetWidth: width  +  padding  +  border (披着羊皮的狼)  
半指温柔乐
2018/09/11
5510
onbeforeunload事件被a链接触发的问题
onbeforeunload本身并非W3C DOM-Event标准事件,只不过在很多时候国内的流氓做法就是离开页面,直接弹出收藏本网页的提示(虽然我很讨厌这种做法,但事实上很多公司一直都在这样默默地强奸用户…)
meteoric
2018/11/16
1.9K0
js获取屏幕大小,当前网页和浏览器窗口
如果您使用的是jQuery,则可以使用jQuery方法获取窗口或document的大小:
IT工作者
2022/01/25
12.5K0
【前端】:浏览器渲染模式
在很久以前的网络上,页面通常有两种版本:为网景(Netscape)的 Navigator准备的版本以及为微软(Microsoft)的 Internet Explorer准备的版本。当 W3C 创立网络标准后,为了不破坏当时既有的网站,浏览器不能直接弃用这些标准。因此,浏览器采用了两种模式,用以把能符合新规范的网站和老旧网站区分开。
WEBJ2EE
2019/12/31
1.5K0
【前端】:浏览器渲染模式
相关推荐
document.compatMode的CSS1compat
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文