`
JavaSam
  • 浏览: 951787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ie浏览器文档兼容模式学习

 
阅读更多
IE6、IE7、IE8、IE9兼容性问题解决办法
2012-01-13 12:00

前言

为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE8引入了文件兼容性。在IE6中引入一个增设的兼容性模式,文件兼容性使你能够在IE呈现你的网页时选择特定编译模式。
新的IE为了确保网页在未来的版本中都有一支的外观,IE8引入了文件兼容性。当你引入一个增设的兼容性模式,
此文章说明文件兼容性的必要性,列出现有版本IE能使用的文件兼容性模式并示范如何选择特定的兼容性模式。


了解文件兼容性的必要性

每个主要版本IE新增的功能都是为了让浏览器更容易使用、增加安全性及更支持业界标准。以这些作为IE的特色,其中一个风险就是旧版本网站无法正确的显示。

为了将这个风险降到最低,IE6允许网页开发人员选择IE编译和显示他们网页的方式。"Quirks mode"为预设,这会使页面以旧版本浏览器的视点显示,"Standards mode"(也称为"strict mode")特点是支持业界标准最为完善。然而要利用这个增强的支持功能,网页必须包含恰当的<!DOCTYPE>指令。

若一个网页没有包含<!DOCTYPE> 指令,IE6会将它以quirks mode显示。若网页包含有效的<!DOCTYPE> 指令但浏览器无法辨识,IE6会将它以IE6 standards mode显示。因为少数网站已经包含<!DOCTYPE> 指令,兼容性模式的切换相当成功。这使网页开发人员能选择将他们的网页转移为standards mode的最佳时机。

随著时间经过,更多网站开始使用standards mode。它们也开始使用IE6的特性和功能来检测IE。举例来说,IE6不支持universal selector(即css之全局选择器 * {}),一些网站便使用它来针对IE做特定的对应。

当 IE7增加了对全域选择器的支持,那些依赖IE6特点的网站便无法侦测出这个新版本的浏览器。因此那些针对IE的特定对应无法应用于IE7,造成这些网站便无法如他们预期的显示。由于<!DOCTYPE> 只支持两种兼容性模式,受到影响的网站拥有者被迫更新他们的网站使其能支持IE7。

IE8 比之前的任何版本浏览器都更支持业界标准,因此针对旧版本浏览器设计的网页可能无法如预期般呈现。为了帮助减轻所有问题,IE8引入文件兼容性的概念,使你能选择你的网页设计要对应的特定IE版本。文件兼容性在IE8增加了一些新的模式,这些模式能告诉浏览器如何解析和编译一个网页。若你的网页无法在 ie8正确的显示,你可以更新你的网站使它支持最新的网页标准(优先选项)或在你的页面上新增一个meta元素用于告诉IE8如何依照旧版本浏览器编译你的页面。

这能让你选择将你的网站更新支持IE8新特点的时机。


认识文件兼容性模式

IE8支持几种文件兼容性模式,它们具有不同的特性并影响内容显示的方式。

•Emulate IE8 mode指示IE使用<!DOCTYPE> 指令来决定如何编译内容。Standards mode指令会显示成IE8 Standards mode而quirks mode会显示成IE5 mode。不同于IE8 mode,Emulate IE8 mode重视<!DOCTYPE> 指令。
•Emulate IE7 mode指示IE使用<!DOCTYPE> 指令来决定如何编译内容。Standards mode指令会显示成IE7 Standards mode而quirks mode会显示成IE5 mode。不同于IE7 mode,Emulate IE7 mode重视<!DOCTYPE> 指令。对于许多网页来说这是最推荐的兼容性模式。
•IE5 mode 编译内容如同IE7的quirks mode之显示状况,和IE5中显示的非常类似。
•IE7 mode编译内容如同IE7的standards mode之显示状况,无论网页是否含有<!DOCTYPE> 指令。
•IE8 mode提供对业界标准的最高支持,包含 W3C Cascading Style Sheets Level 2.1 SpecificationW3C Selectors API ,并有限的支持 W3C Cascading Style Sheets Level 3 Specification (Working Draft)
•Edge mode指示IE以目前可用的最高模式显示内容。当使用IE8时其等同于IE8 mode。若(假定)未来放出支持更高兼容性模式的IE,使用Edge mode的页面会使用该版本能支持的最高模式来显示内容。同样的那些页面在使用IE8浏览时仍会照常显示。

由于edge mode使用该IE版本所能支持的最高模式来显示所浏览的网页内容,建议仅使用于测试页及其他非商用页面。


指定文件兼容性模式

要为你的网页指定文件模式,需要在你的网页中使用meta 元素放入X-UA-Compatible http-equiv 标头。以下是指定为Emulate IE7 mode 兼容性之范例。

< html >
< head >
  
<!--  Mimic Internet Explorer 7  -->
  
< meta  http-equiv ="X-UA-Compatible"  content ="IE=EmulateIE7"   />
  
< title > My Web Page </ title >
</ head >
< body >
  
< p > Content goes here. </ p >
</ body >
</ html >  


其内容随著指定的页面模式而更改,当要模拟IE7时,指定IE=EmulateIE7 ,指定IE=5 , IE=7 , 或IE=8 来选择其中一种兼容性模式。你也可以指定IE=edge 来指示IE8使用它支持的最高模式。

X-UA-compatible标头没有大小写之分。然而除了title元素及其他的meta 元素之外,它必须出现在网页header节其它元素之前的位置,


设定网站服务器以指定预设兼容性模式

网站管理员可籍着为网站定义一个自订标头来为他们的网站预设一个特定的文件兼容性模式。这个特定的方法取决于你的网站服务器。举例来说,下列的 web.config文件使Microsoft Internet Information Services (IIS)能定义一个自订标头以自动使用IE7 mode来编译所有网页。

<? xml version="1.0" encoding="utf-8" ?>
< configuration >
  
< system.webServer >
    
< httpProtocol >
      
< customHeaders >
        
< clear  />
        
< add  name ="X-UA-Compatible"  value ="IE=EmulateIE7"   />
      
</ customHeaders >
    
</ httpProtocol >
  
</ system.webServer >
</ configuration >  


若你已于网站服务器指定了一个预设的文件兼容性模式,你可以在个别页面上指定不同的文件兼容性模式来盖过它。在网页中指定的模式优先权高于服务器中所指定的模式。

请查阅你的网站服务器关于指定自订标头的资讯,或看更多资料:

Implementing the META Switch on Apache
Implementing the META Switch on IIS


判定文件兼容性模式

要判定网页使用IE8浏览时的文件兼容性模式,使用document object(文档对象)的documentMode功能。例如在IE8的网址列输入下列程式码会显示目前页面的文件模式。

javascript:alert(document.documentMode);

 

documentMode 功能会回传一个数值对应目前页面的文件兼容性模式,举例来说,若网页指定为支持IE8模式,documentMode 便会回传值"8 "。

在IE6引入的compatMode功能不支持在IE8引入的documentMode 功能。目前使用compatMode 建立的应用程式还能在IE8中作用,但它们必须更新为使用documentMode。

若你希望使用JavaScript判定一个文件的兼容性模式,引入下面范例的这段程式码可支持旧版本的IE。

engine  =   null ;
if  (window.navigator.appName  ==   " Microsoft Internet Explorer " )
{
   
//  This is an IE browser. What mode is the engine in?
    if  (document.documentMode)  //  IE8
      engine  =  document.documentMode;
   
else   //  IE 5-7
   {
      engine 
=   5 //  Assume quirks mode unless proven otherwise
       if  (document.compatMode)
      {
         
if  (document.compatMode  ==   " CSS1Compat " )
            engine 
=   7 //  standards mode
      }
   }
   
//  the engine variable now contains the document compatibility mode.
}

 

认识内容属性值

内容属性值在接收到异于先前叙述的数值时是具有弹性的。这能使你对于IE如何显示你的网页更有操控性。举例来说,你可以设定内容属性值为IE=7.5。当你这样做的时候,IE尝试将这个值转换为version vector并选择最接近的结果。在这个例子中,IE会将其设定为IE7 mode。下面的范例显示该模式设定为其他值的状况。

< meta  http-equiv ="X-UA-Compatible"  content ="IE=4" >     <!--  IE5 mode  -->
< meta  http-equiv ="X-UA-Compatible"  content ="IE=7.5" >   <!--  IE7 mode  -->
< meta  http-equiv ="X-UA-Compatible"  content ="IE=100" >   <!--  IE8 mode  -->
< meta  http-equiv ="X-UA-Compatible"  content ="IE=a" >     <!--  IE5 mode  -->  

<!--  This header mimics Internet Explorer 7 and uses 
<!DOCTYPE> to determine how to display the Web page 
-->
< meta  http-equiv ="X-UA-Compatible"  content ="IE=EmulateIE7" >   

注意: 前面的范例显示单独的内容值。实际上IE只会执行网页中第一个X-UA-Compatible标头。

你也可以使用内容属性来指定复数的文件兼容性模式,这能帮助确保你的网页在未来的浏览器版本都能一致的显示。欲设定复数的文件模式,请设定内容属性以判别你想使用的模式。使用分号来分开各个模式。

如果一个特定版本的IE支持所要求的兼容性模式多于一种,将採用列于标头内容属性中最高的可用模式。你可以使用这个特性来排除特定的兼容性模式,虽然并不推荐这样做。举例来说,下列标头即会排除IE7 mode。

< meta  http-equiv ="X-UA-Compatible"  content ="IE=5; IE=8"   />

 

结论

兼容性对于网页设计师来说是非常重要的顾虑。虽然最好是可以建立一个完全不需依赖任何网页浏览器特性或功能的网站,有时候这是不可能实现的。文件兼容性模式便能将网页限制在某个特定版本的IE中。

使用X-UA-Compatible标头来指定你的页面支持的IE版本。使用document.documentMode 判定页面的兼容性模式。

选择支持某个特定版本的IE,你可以确保你的页面在未来的浏览器版本中也能有显示的一致性。

 

 

转载于:http://hi.baidu.com/376240040/blog/item/2b27903989fefeed3887ce75.html
分享到:
评论

相关推荐

    IETab.crx 谷歌浏览器兼容性模式 谷歌浏览器ie 谷歌浏览器兼容模式设置步骤及插件ietab

    此外,由于IETab是通过Chrome扩展模拟IE,其性能可能略逊于直接使用IE浏览器。在处理复杂网页或大量数据时,可能会感觉速度稍慢。 【总结】 IETab是一款方便实用的工具,它弥补了Chrome与部分需要IE环境的网页之间...

    IE浏览器不兼容网站网页设置方法.docx

    IE浏览器提供了多种文件模式,可以选择适合的文件模式来解决不兼容问题。下面是文件模式的设置步骤: 1. 点击“文件”—“打开”—“文件模式”; 2. 选择要使用的文件模式,如IE9文档模式、HTML CSS控制台脚本等。...

    HTML5 兼容IE浏览器

    然而,由于Internet Explorer(尤其是早期版本)对新标准的支持不足,使得在IE浏览器上实现HTML5兼容性成为一个挑战。这篇博客将探讨如何确保HTML5页面在IE浏览器上正常工作。 首先,了解IE浏览器对HTML5的支持情况...

    IE兼容模式怎么设置.pdf

    IE浏览器的兼容模式设置对于电脑维护人员来说是一个重要的技能,尤其在维护旧版网站或者需要运行旧插件的网站时,兼容模式显得尤为重要。IE自8版本以后提供了兼容模式,使得旧版网站可以在新的浏览器版本中正常运行...

    判断IE8兼容性视图工作模式

    // 非IE浏览器,无需处理兼容性视图 alert('这不是IE浏览器'); } ``` 在实际开发中,我们可能还需要考虑到其他IE特有的问题,比如盒模型差异、事件处理方式、CSS属性支持等。对于IE8的兼容性视图,可能会导致某些...

    文档模式与IE浏览器模式

    ### 文档模式与IE浏览器模式 #### 一、引言 随着Web技术的不断发展与变化,不同的浏览器在处理HTML和CSS的方式上存在着细微差异。为了兼容各种基于不同标准开发的网站,微软在Internet Explorer 8及之后的版本中...

    谷歌浏览器js打开IE浏览器.rar

    由于IE浏览器的某些特性和标准支持与其他现代浏览器存在差异,因此在某些情况下,我们需要在Chrome中通过脚本触发IE浏览器的启动。这个压缩包"谷歌浏览器js打开IE浏览器.rar"提供了一种方法来实现这个功能。 首先,...

    解决IE浏览器兼容问题

    1. **DOCTYPE声明**:IE浏览器在不同的文档模式下解析页面的方式不同,DOCTYPE声明可以影响浏览器进入何种模式。例如,使用`&lt;!DOCTYPE html&gt;`声明可使IE8以上版本进入标准模式,而旧的DOCTYPE可能导致浏览器进入 ...

    IE浏览器兼容

    以下是一些关于解决IE浏览器兼容问题的关键知识点: 1. **DOCTYPE声明**:在HTML文档开头添加正确的DOCTYPE声明可以确保浏览器以标准模式渲染页面,避免Quirks Mode带来的兼容性问题。例如,使用`&lt;!DOCTYPE html&gt;`...

    Windows 11 开启IE ,Win11 启动IE浏览器

    然而,由于某些企业或网站仍然依赖于IE浏览器的兼容性,Windows 11并没有完全移除IE,而是将其隐藏起来。以下是如何在Windows 11上启动和使用Internet Explorer的详细步骤: 首先,理解为什么Windows 11不再默认...

    彻底阻止IE浏览器跳转Edge

    这种情况可能会对那些依赖IE浏览器进行特定工作或习惯使用IE的用户造成不便。这篇指南将详细介绍如何彻底阻止IE浏览器自动跳转到Edge。 首先,理解这个问题的原因:微软在更新中内置了一个功能,旨在引导用户从过时...

    IE浏览器,让大家分享下喔,全部初学者做开发使用

    如果这是一个开源项目,通过解压并查看这些文件,初学者可以深入学习到如何为IE浏览器编写和调试代码。 总之,尽管IE浏览器已不再主流,但作为开发者的我们仍然需要对其有一定程度的了解,尤其是在处理遗留系统或者...

    IE浏览器activex修改及添加可信任站点BAT

    标题中的“IE浏览器activex修改及添加可信任站点BAT”指的是一个使用批处理(BAT)文件来管理和配置Internet Explorer(IE)浏览器的方案,主要涉及ActiveX控件的管理以及安全设置的调整。ActiveX是微软开发的一种...

    [资源分享]解决Win10下IE浏览器树形控件treeview无法显示的问题

    1. **浏览器兼容性**:首先,我们需要确认问题是否由IE浏览器的版本或兼容模式设置引起。某些版本的IE可能不支持特定的树形控件或者需要特定的设置才能正确显示。检查浏览器的更新状态,确保已安装最新的安全补丁和...

    非IE浏览器实现IE功能.rar

    综上所述,"非IE浏览器实现IE功能.rar"这个压缩包可能包含安装和配置IE Tab的指南,以及其他与非IE浏览器运行IE特有功能相关的文档或资源,帮助用户在非IE浏览器中顺利加载和运行依赖OCX控件的网页。

    解决各种IE兼容问题_IE6_IE7_IE8_IE9_IE10

    在网站开发过程中,尤其是涉及到IE浏览器的兼容性问题时,开发者常常会遇到一系列挑战。由于不同版本的Internet Explorer(IE6、IE7、IE8、IE9、IE10)对Web标准的支持程度不一,这导致在这些浏览器中运行同一段代码...

    Win11使用IE浏览器

    这个VBS文件的功能就是执行打开IE浏览器的操作,而无需修改或替换系统的任何核心文件,这样就避免了可能对系统稳定性产生的影响。 以下是使用“IE.vbs”文件的步骤: 1. 首先,下载并保存名为“IE.vbs”的文件到你...

    multiple-ie-setup.rar 多IE浏览器工具

    多IE浏览器工具简化了这一过程,特别是在IE浏览器因为ActiveX控件和兼容模式等问题存在更多兼容性挑战时。 6. **软件部署**:使用这样的工具,用户可以轻松地在本地计算机上部署和管理多个IE版本,无需专业知识即可...

    IE中兼容模式下JSON未定义

    在IE浏览器中,有时会遇到“JSON未定义”的错误,特别是在使用兼容模式或者较旧版本的IE时。这是因为JSON(JavaScript Object Notation)是ECMAScript 5引入的一个内置对象,而在IE8及以下版本中并未原生支持JSON。...

Global site tag (gtag.js) - Google Analytics