美文网首页
浏览器模式[标准模式与怪异模式]

浏览器模式[标准模式与怪异模式]

作者: dctxf | 来源:发表于2016-09-08 10:08 被阅读895次

最近在做项目的时候,浏览器老是提示JQMIGRATE: jQuery is not compatible with Quirks Mode,一直想不通是为什么,查询之后才知道原来浏览器是有模式的。下面是我对浏览器模式的简单理解。

下面引自网络

由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别。

W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。

火狐一直工作在标准模式下,但IE(6,7,8)标准模式与怪异模式差别很大,主要体现在对盒子模型的解释上,这个很重要,下面就重点说这个。

浏览器究竟该采用哪种模式渲染

这就引出的DTD,既是网页的头部声明,浏览器会通过识别DTD而采用相对应的渲染模式:

  1. 浏览器要使老旧的网页正常工作,但这部分网页是没有doctype声明的,所以浏览器对没有doctype声明的网页采用quirks mode解析。
  2. 对于拥有doctype声明的网页,什么浏览器采用何种模式解析,这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype
  3. 对于拥有doctype声明的网页,这里有几条简单的规则可用于判断:对于那些浏览器不能识别的doctype声明,浏览器采用strict mode解析。
  4. 在doctype声明中,没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析。
  5. 可以这么说,在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的。
  6. 在ie6中,如果在doctype声明前有一个xml声明(比如:<?xml version=”1.0″ encoding=”iso-8859-1″?>),则采用quirks mode解析。这条规则在ie7中已经移除了。

如何设置为怪异模式:

方法一:在页面项部加

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>

方法二:什么也不加。

如何设置为标准模式:

 <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
 <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
 <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” “http://www.w3.org/TR/html4/frameset.dtd”>

XHTML1.0提供了三种DOCTYPE可选择:

过渡型(Transitional )

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

严格型(Strict )

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>

框架型(Frameset )

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”>

如何判定现在是标准模式还是怪异模式:

方法一:执行以下代码

alert(window.top.document.compatMode) ;
//BackCompat  表示怪异模式
//CSS1Compat  表示标准模式

方法二:jquery为我们提供的方法,如下:

alert($.boxModel)
alert($.support.boxModel)

注意:

为了我们写的代码更好的兼容,请一定要让浏览器使用标准模式渲染

相关文章

  • 大前端——知识点回顾(HTML)

    HTML 一、浏览器的标准模式和怪异模式? 标准模式:浏览器按W3C标准解析执行代码;怪异模式:使用浏览器自己的方...

  • 标准模式和怪异模式

    什么是标准模式和怪异模式? 浏览器本身分为两种模式,一种是标准模式,一种是怪异模式,浏览器通过doctype来区分...

  • 浏览器的严格模式与混杂模式

    严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。 混杂模式:又称怪异模式或兼容模式,是指浏览器用自己...

  • Javascript 严格模式"use strict"

    严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的...

  • 严格模式和怪异模式的区别

    严格模式(也叫标准模式)和怪异模式,是浏览器解析CSS时的两种模式。 严格模式:即标准模式。用通俗易懂的话来讲,就...

  • 浏览器模式[标准模式与怪异模式]

    最近在做项目的时候,浏览器老是提示JQMIGRATE: jQuery is not compatible with...

  • 【怪异解析-盒模型】

    怪异解析 - IE6盒模型 怪异模式是:“部分浏览器在支持W3C标准的同时还保留了原来的解析模式”。 怪异模式主要...

  • 浏览器标准模式和怪异模式之间的区别是什么?

    1、浏览器的标准模式和怪异模式究竟是什么? 标准模式:是浏览器按照W3C标准解析执行代码,这样用规定的语法去渲染,...

  • 3 CSS3 盒模型

    1、网页渲染模式:标准渲染模式、混杂(怪异)渲染模式 ->浏览器都有两种渲染网页模式 IE6混杂模式盒模型:代码区...

  • XHTML,HTML,XML区别,link和@import区别,

    doctype(文档类型)的作用是什么? 告诉浏览器用何种渲染模式来渲染页面 浏览器标准模式和怪异模式之间的区别是...

网友评论

      本文标题:浏览器模式[标准模式与怪异模式]

      本文链接:https://www.haomeiwen.com/subject/lessettx.html