文档模式小记

时间:2022-05-15
本文章向大家介绍文档模式小记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

虽然以前就知道浏览器有文档模式,但是一直对他迷迷糊糊。这本书有说道,于是就仔细看看吧。 文档模式有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们也不能完全信任它,因为它只是提供尽可能的文档模式模拟而已。

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