Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >IE对文档的解析模式及兼容性问题

IE对文档的解析模式及兼容性问题

作者头像
大江小浪
发布于 2018-07-25 01:34:12
发布于 2018-07-25 01:34:12
1.2K0
举报
文章被收录于专栏:小狼的世界小狼的世界

深入研究这个问题源于最近制作的几个页面,交给前端后,发现在IE8下,对于JS动态控制的内容,页面高度不能够随着动态的调整。

仔细检查后发现问题在于 display:inline-block 这个属性。

inline-block 这个属性确实帮我们解决了不少问题,但是IE8在动态内容的渲染支持上,还是会有奇怪的问题。

最后的解决方法是使用 x-ua-compatible ,来强制IE8使用IE7的模式来解析页面。下面是整理的一些相关的资料。

IE的文档模式

Document Compatibility 决定了IE如何渲染你的页面,IE支持不同的 document (compatibility) mode。IE6之后的所有IE浏览器都支持以下几种模式:

Standards mode:就是每个浏览器版本所提供的最新的功能,也是默认的模式;

Quirks mode:这个模式强调兼容性超过标准(影响可以看这里

Almost-standards mode:这个模式支持最新标准的API,但是界面渲染还是遵循旧版本的标准。

如果一个页面包含了 <!DOCTYPE> 标签,那么IE浏览器会按照标准模式进行解析。如果一个不包含 <!DOCTYPE> 的页面,IE浏览器使用 Quirks mode 来进行解析,这种情况下可能会有奇怪的事情发生。

大多数时候,我们都使用标准的模式来指定文档模式。这样能够确保适应尽可能多的标准。

<!DOCTYPE html>

有些时候,我们需要指定一些高版本的浏览器使用低版本的文档模式解析页面,这时我们可以使用  x-ua-compatible 头标签来实现。例如:

<html>

<head>

     <!-- Use Internet Explorer 9 Standards mode -->

     <meta http-equiv="x-ua-compatible" content="IE=9">

     <title>My Page</title>

</head>

<body>

     <p>Content goes here.</p>

</body>

</html>

上面这段代码,在不同的浏览器版本中,有不同的表现,如下表:

浏览器版本

结果

描述

Windows Store app或Windows UI中的浏览器

IE 10 标准模式

这是Windows Store app和Windows UI中唯一支持的模式

Internet Explorer for the Desktop 或者Internet Explorer 9

IE9 标准模式

这正是x-ua-compatible指定的模式,而且浏览器支持这种模式

Internet Explorer 8

IE8 标准模式

因为浏览器不支持IE9标准模式,所以使用浏览器支持的最高标准模式

Internet Explorer 7, Internet Explorer 6 或者Internet Explorer 5.5 for mac

IE5 (Quirks)模式

这些浏览器不支持这个标签头,并且网页中也没有指定<!DOCTYPE>

记住以下几个规则:

  • 如果页面指定了DOCTYPE并且也使用了x-ua-compatible标签,则x-ua-compatible标签将覆盖DOCTYPE
  • 如果浏览器支持x-ua-compatible标签,浏览器会使用他所支持的最高模式显示,则未必是标签指定的版本
  • 对于不支持x-ua-compatible标签的老版本浏览器,使用<!DOCTYPE>来决定文档模式
  • IE9和之前版本的浏览器,在遇到没有指定<!DOCTYPE>的页面时,使用IE5 Quirks模式解析文档,所以建议所有文档都要包含<!DOCTYPE>

注意:所有版本的浏览器在解析 <!DOCTYPE html> 时,都会使用各自版本所支持的最高的标准模式来解析,所以推荐都是用HTML5的标记方式。IE9中,包含框架Frameset的页面,子页面的模式和父页面一致。但是在IE10中,可以分别指定。

用法:

x-ua-compatible 头标签大小写不敏感,必须用在 head 中,必须在除 title 外的其他 meta 之前使用。

1、使用一行代码来指定浏览器使用特定的文档模式。

<meta http-equiv="x-ua-compatible" content="IE=9" >

<meta http-equiv="x-ua-compatible" content="IE=8" >

<meta http-equiv="x-ua-compatible" content="IE=7" >

2、在一些情况下,我们需要限定浏览器对文档的解析到某一特定版本,或者将浏览器限定到一些旧版本的表现中。可以用如下的方式:

<meta http-equiv="x-ua-compatible" content="IE=EmulateIE9" >

<meta http-equiv="x-ua-compatible" content="IE=EmulateIE8" >

<meta http-equiv="x-ua-compatible" content="IE=EmulateIE7" >

使用这种写法,浏览器或者使用标准模式进行解析,或者使用 IE5 Quirks 模式进行解析。

3、为了测试,我们也可以使用下面的语句指定浏览器按照最高的标准模式解析页面。

<meta http-equiv="x-ua-compatible" content="IE=edge" >

4、多个模式的指定。我们可以用逗号分割多个版本,这种情况下,浏览器会从这个列表中选择一个他所支持的最高版本来使用标准模式进行渲染。如下面的例子,在IE8进行浏览时,将会使用IE7的标准模式进行渲染,因为他本身不支持IE9和IE10。

<meta http-equiv="x-ua-compatible" content="IE=7,9,10" >

参考资料:

1、ie8 bugs

2、Cross Browser Support for inline-block Styling

3、使用x-ua-compatible来设置IE兼容模式

4、MSDN:Define Document compatibility

5、The effects of quirks mode emulation

6、Specifying legacy document modes

7、IE9提供四种兼容模式

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
x-ua-compatible 用来指定IE浏览器解析编译页面的model x-ua-compatible 头标签大小写不敏感,必须用在 head 中,必须在除 title 外的其他 meta 之前使用。 1、使用一行代码来指定浏览器使用特定的文档模式。 <meta http-equiv="x-ua-compatible" content="IE=9" > <meta http-equiv="x-ua-compatible" content="IE=8" > <meta http-equiv="x-ua-compatible" content="IE=7" > 2、在一些情况下,我们需要限定浏览器对文档的解析到某一特定版本,或者将浏览器限定到一些旧版本的表现中。可以用如下的方式: <meta http-equiv="x-ua-compatible" content="IE=EmulateIE9" > <meta http-equiv="x-ua-compatible" content="IE=EmulateIE8" > <meta http-equiv="x-ua-compatible" content="IE=EmulateIE7" > 使用这种写法,浏览器或者使用标准模式进行解析,或者使用 IE5 Quirks 模式进行解析。 3、为了测试,我们也可以使用下面的语句指定浏览器按照最高的标准模式解析页面。 <meta http-equiv="x-ua-compatible" content="IE=edge" > 4、多个模式的指定。我们可以用逗号分割多个版本,这种情况下,浏览器会从这个列表中选择一个他所支持的最高版本来使用标准模式进行渲染。如下面的例子,在IE8进行浏览时,将会使用IE7的标准模式进行渲染,因为他本身不支持IE9和IE10。 <meta http-equiv="x-ua-compatible" content="IE=7,9,10" > 参考: http://www.cnblogs.com/cocowool/archive/2013/04/25/3043832.html http://www.cnblogs.com/nidilzhang/archive/2010/01/09/1642887.html http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 2012-04-25 16:29:04| 分类: 学习 |字号 订阅 在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.com/2010/xbdml> <head> <meta http-equiv=Content-Type content=“text/html;charset=utf-8″> <meta http-equiv=X-UA-Compatible content=IE=EmulateIE7> <title>百度一下,你就知道 </title> <script>var wpo={start:new Date*1,pid:109,page:‘superpage’}</script> <meta http-equiv=X-UA-Compatible content=IE=EmulateIE7> 可以打开百度,右键查看源码看下!我们可以看下文件头是否存在这样一行代码! 这句话的意思是强制使用IE7模式来解析网页代码! 在这里送上几种IE使用模式! <meta http-equiv=“X-UA-Compatible” content=“IE=8″> 2. Google Chrome Frame也可以让IE用上Chrome的引擎: <meta http-equiv=“X-UA-Compatible” content=“chrome=1″ /> 3.强制IE8使用IE7模式来解析 <meta http-equiv=“X-UA-Compatible” content=“IE=EmulateIE7″><!– IE7 mode –> //或者 <meta http-equiv=“X-UA-Compatible” content=“IE=7″><!– IE7 mode –> 4.强制IE8使用I
用户1499526
2019/07/15
4.2K0
X-UA-Compatible IE 浏览器默认文档模式设置「建议收藏」
制作网页的时候,IE8浏览器浏览页面的时候,有时候文档模式默认是IE7,导致IE8兼容性不是非常好。出现IE7应该出现的模式。
全栈程序员站长
2022/07/08
1.1K0
【转】http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式详解
文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。
书童小二
2018/09/03
2.1K0
JS魔法堂:浏览器模式和文档模式怎么玩?
一、前言                                         从IE8开始引入了文档兼容模式的概念,作为开发人员的我们可以在开发人员工具中通过“浏览器模式”和“文档模式”(IE11开始改为“浏览器模式”改成更贴切的“用户代理字符串”)品味一番,它的出现极大地方便了苦逼的前端攻城狮们适配各版本的IE,但jser们也不能完全信任它,因为它只是提供尽可能的文档模式模拟而已。   本篇大部分内容来源于官方解说:http://msdn.microsoft.com/library/cc288
^_^肥仔John
2018/01/18
2.1K0
前端翻译:Activating Browser Modes with Doctype
一、前言                           由于本人英语能力有限,译本内容难免有误,望各位指正!   本译文不含附录部分,请知悉。 二、译文内容                       为了让用户正常访问遵循Web标准的网站和90年代后期的非标准网站,当前的浏览器都内置了多种引擎模式。本文将解释这些模式和它们触发的原理。 本文概要(没耐性的同学看完这个就可以闪了!)     本文结论:以<!DOCTYPE html>作为你们的HTML文档(http头的mime为text/http的
^_^肥仔John
2018/01/18
1.1K0
一行代码解决IE6,IE7,IE8不兼容问题
最近在整理网页mate标签,想着把常用的mate标签记录一下,有的可以解决IE不兼容的问题。现在电脑普遍来说最低版本的IE也应该是IE8了,但是不排除某些落后的电脑机器依然是IE6.7,所以整理下相关资料以留备用。
李洋博客
2021/06/16
1.5K0
IE=edge,chrome=1的META信息详解
这几天在玩 HTML5 ★ Boilerplate,注意到meta信息中有这么一句:  代码如下: <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">  http-equiv="X-UA-Compatible"这个是IE8的专用标记,是用来指定Internet Explorer 8 浏览器模拟某个特定版本IE浏览器的渲染方式,以此来解决IE浏览器的兼容问题。  例如指定IE8浏览器使用IE6的渲染方式呈现界面。  曾
deepcc
2018/05/16
1.5K0
解决css的ie浏览器各种兼容问题
在进行网站开发过程中,IE是另很多程序员头疼的一个浏览器,他的版本兼容性很难调整,尤其是IE6,IE7,IE8,IE9,IE10这几个版本的区别有很大。现在百度与谷歌都有了一行解决这种兼容性的代码了。我们先来看一下百度的。
OECOM
2020/07/02
2.2K0
各种IE(IE6-IE10)兼容问题一行代码搞定
用一行代码搞定各种 IE(IE6-IE10)兼容问题,是一个很不错的方法。 x-ua-compatible 用来指定 IE 浏览器解析编译页面的 model x-ua-compatible 头标签大小写不敏感,必须用在 head 中,必须在除 title 外的其他 meta 之前使用。 1、使用一行代码来指定浏览器使用特定的文档模式。 <meta http-equiv="x-ua-compatible" content="IE=9" > <meta http-equiv="x-ua-compatible"
沈唁
2018/05/24
1.8K0
【BootStrap】<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 的说明
这个网址号称是国内最先翻译BootStrap4的中文文档。 该网址是:http://wiki.jikexueyuan.com/project/bootstrap4/getting-started/introduction/ 然而,我想说的是,这源码其实都是BootStrap3的。 英文的BootStrap4的模板是下面这个: 英文网址:https://v4-alpha.getbootstrap.com/getting-started/introduction/
谙忆
2021/01/21
7360
【BootStrap】<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 的说明
HTML Meta中添加X-UA-Compatible和IE=Edge,chrome=1有什么作用
这是一个文档兼容模式的定义。主要用于加强代码对IE的兼容性,强制IE使用当前本地最新版标准模式渲染或者用chrome内核渲染。
全栈程序员站长
2022/07/08
1.9K0
HTML Meta中添加X-UA-Compatible和IE=Edge,chrome=1有什么作用
一、前端基础-html-head标签
<!-- HTML HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (markup language) 标记语言是一套标记标签 (markup tag) HTML 使用标记标签来描述网页 --> <!--HTML 标签 HTML 标记标签通常被称为 HTML 标签 (HTML tag)。 HTML 标签是由尖括号包围的关键词,比如 <html> HTML 标签通常是成对出现的,比如
堕落飞鸟
2022/02/10
4160
html基础+常用标签
概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记)。相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器
程序员同行者
2018/06/22
1.3K0
数往知来:一次浏览器兼容工作中的知识点分析
显然,这是一个bootstrap样式的后台单页应用,用react实现了组件化、用mobx管理状态、引入了fetch等promise异步工具,并且使用了一些日期选择和富文本编辑器插件等第三方库
江米小枣
2020/06/15
1.1K0
HTML利用meta标签设置IE文档模式及相关知识拓展
日常项目中,为了避免兼容问题,防止某些功能或者插件不能用,会用到IE浏览器的模式设置代码。
德顺
2023/08/24
6390
IE7下当position:fixed遇到text-align:center
啥也不说,先看代码: <!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> <title>IE7下当position:relative遇到text-align:center</title> <meta
菩提树下的杨过
2018/01/22
5820
Meta标签的那些事
Meta标签是HTML语言head区的一个辅助性标签,它位于HTML文档头部的head标记和title标记之间,它提供用户不可见的信息。它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词)
用户1667431
2018/04/18
9920
Meta标签的那些事
CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
张果
2018/01/04
3.1K0
CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
html头部meta属性大全——各种奇葩属性设置大归类
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
周陆军博客
2023/05/07
1.3K0
CSS-各种cs样式之浏览器兼容处理方式汇总大全(更新中...)
页面模板 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="description" content="本网站的目的是....." /> 7 <meta name="keywords" content="作品集,素材库"
xing.org1^
2018/05/17
1.7K0
推荐阅读
相关推荐
一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档