文档模式小记

虽然以前就知道浏览器有文档模式,但是一直对他迷迷糊糊。这本书有说道,于是就仔细看看吧。 文档模式有3种,

  • 混杂模式
  • 标准模式
  • 准标准模式

混杂模式是一般的浏览器在开发者没有声明的时候默认使用(不过这种模式在不同的浏览器下表现的差异很大,一般不要用),因为文档模式是在IE5.5出现时引入的,所以混杂模式的作用是让之后得浏览器版本的行为更像IE5.5,而标准模式则是为了让IE的行为更像标准(遵守W3C的标准),最后一种准标准模式,我就呵呵了,看了半天也没理解书上那简短的一句话讲的是什么,但是度娘说准标准模式在IE6,7时代和标准模式是一样的,在IE8之后可能有更加细化的标准。 标准模式之下还有更加细分的地方:

  • 1、HTML版的严格模式
  • 2、XHTML版的严格模式
  • 3、HTML5模式

代码:

1 <--HTML版的严格模式-->
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
3  "http://www.w3c.org/TR/html4/strict.dtd">
4 <!--XHTML版的严格模式-->
1 <--XHTML版的严格模式-->
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3  "http://www.w3c.org/TR/xhtml1/xhtml1-strict.dtd">
1 <--HTML5模式-->
2 <!DOCTYPE HTML>

准标准模式则分为

  • 过渡模式
  • 框架集型模式

代码:

1 <--HTML4.01过渡型-->
2 <!DOCTYPE HTML PUBLIC 
3 "-//W3C//DTD HTML 4.01 Transitional//EN"
4 "http://www.w3.org/TR/html4/loose.dtd">
1 <--HTML4.01框架集型-->
2 <!DOCTYPE HTML PUBLIC 
3 "-//W3C//DTD HTML 4.01 Frameset//EN"
4 "http://www.w3.org/TR/html4/frameset.dtd">

当然还有XHTML格式的,换掉就是啦。

准标准模式和标准模式非常接近,差异基本可以忽略

还需要说的是,除了文档模式,还有一个叫浏览器模式,这个模式特点是,设置不同的浏览器模式,IE会返回给服务器不同的user-agent,这样服务器可以根据返回的user-agent判断用户的IE版本,从而返回不同的页面内容,而文档模式,这会根据文档模式采取不同分方式解析接收到的网页,因为文档模式会影响css甚至js的解析方式,会出现不同的表现。

还有摘取来自其他文章的一些解释:

“浏览器模式”用于切换IE针对该网页的默认文档模式、对不同版本浏览器的条件备注解析、发送给网站服务器的用户代理(User-Agent)字符串的值。网站可以根据浏览器返回的不同用户代理字符串判断浏览器的版本和安装的功能,这样就可以向不同的浏览器返回不同的页面内容。 “文档模式”用于指定IE的页面排版引擎(Trident)以哪个版本的方式来解析并渲染网页代码。切换文档模式会导致网页被刷新,但不会更改用户代理字符串中的版本号,也不会从服务器重新下载网页。切换浏览器模式的同时,浏览器也会自动切换到相应的文档模式。 由于IE6和IE5.5下DOM树的解析等都有很大差异,导致那些适配IE5.5的老网站无法在IE6上正常显示,于是出现了一个新功能——“兼容模式”,用于解决老网站的显示问题。IE6的兼容模式就两种,怪异模式(Quirks)和IE6标准模式。(IE7也只有怪异模式和IE7标准模式) IE6默认使用怪异模式(Quirks),仅当以<!DOCTYPE>作为文档第一行声明文档类型时,才采用IE6的标准模式,即使IE无法识别所声明的文档类型。(IE7也是这样) 注意:这时的兼容模式主要是解决显示问题,要知道那时的JS只是小配角而已。 从IE8开始引入了文档兼容模式的概念,作为开发人员的我们可以在开发人员工具中通过“浏览器模式”和“文档模式”(IE11开始改为“浏览器模式”改成更贴切的“用户代理字符串”)品味一番,它的出现极大地方便了苦逼的前端攻城狮们适配各版本的IE,但jser们也不能完全信任它,因为它只是提供尽可能的文档模式模拟而已。

嗯,如果有错,请指出啦。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏优启梦

使用Referer Meta标签控制referer 来源

本文描述了一个关于 http 协议中 referer 的 metadata 参数的提议,使用这个 metadata 参数,html 文档可以控制 http 请求...

30550
来自专栏编程微刊

[慕课笔记] node+mongodb建站攻略

26150
来自专栏python3

python 软件目录结构规范

"设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题。对于这种风格上的规范,一直都存在两种态度:

1.4K10
来自专栏CaiRui

Mysql-15-mysql分布式应用

1.分布式应用的概念和优势   分布式数据库是指利用高速网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中...

23780
来自专栏区块链

Cookie窃取与欺骗

Cookie窃取与欺骗 实验准备: 1、xss平台(http://manshow.xyz/xss) 2、黑客:172.18.199.27 3、目标:172.18...

22800
来自专栏蘑菇先生的技术笔记

Redis高可用分布式内部交流(九)

37070
来自专栏皮振伟的专栏

[linux][nginx]nginx的graceful shutdown和worker shutdown timeout

前言: 某大佬问作者,nginx做proxy的时候,重新加载配置的时候,会不会影响已有的连接? 作者基于too young too simple的认知:clie...

26820
来自专栏GreenLeaves

Oracle PL/SQL编程之过程

1、简介 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分,通...

20760
来自专栏喔家ArchiSelf

从连接池到内存池

AI赋能万物,老码农的伙伴们也曾经开发了一个基于图数据库的知识问答系统,在压力测试的时候发现随着并发数的增加,响应的时延明显变长,看时延分布,是应用程序与图数据...

18410
来自专栏大前端开发

从编程小白到全栈开发:从最容易的开始

学习编程,重要的一点就是要进行思考,而更重要的一点是进行动手实践。简单的代码逻辑,我们可能想想就能在脑子里建立出这个代码的样子来,但是别以为你能永远这样人肉运行...

10330

扫码关注云+社区

领取腾讯云代金券