`
dacoolbaby
  • 浏览: 1267408 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[转]IE8兼容模式大坑

阅读更多

公司标装的WIN7都是IE8的,所以我目前的任务,就是让页面顺利地在IE8下面展示。

可是大家都知道,微软的东西非常水,规范很奇葩。

所以,我找了一篇解决IE8这种因为解析DOCTYPE异常而导致浏览器进入兼容模式的文章。

原文:http://www.cnblogs.com/jerrold1108cn/articles/1587039.html 

 

前言

      为了帮助确保你的网页在所有未来的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支持几种文件兼容性模式,它们具有不同的特性并影响内容显示的方式。

•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浏览时仍会照常显示。

 

<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> 

 

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

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

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.
}

 

使用浏览器内容属性值:

<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支持所要求的兼容性模式多于一种,将採用列于标头内容属性中最高的可用模式。你可以使用这个特性来排除特定的兼容性模式,虽然并不推荐这样做。举例来说,下列标头即会排除IE7 mode。
-->
<meta http-equiv="X-UA-Compatible" content="IE=5; IE=8" />

 

结论

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

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

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

 

 

分享到:
评论

相关推荐

    数字化转型12个大坑.docx

    然而,企业在转型过程中可能会遇到诸多挑战,以下12个大坑是企业在数字化转型时需要特别警惕的: 1. **不了解转型本质和目的**:企业必须清楚地认识到,数字化转型不仅仅是技术升级,更关乎企业整体战略的调整。...

    大坑传统美食首推土鸡城,15年前上大坑,游客十之八九必.pdf

    【大坑传统美食首推土鸡城】是一个深受游客和美食爱好者欢迎的餐饮目的地,尤其在15年前,它已经成为台中大坑地区不可或缺的一部分。这个美食地标——“黑公羊土鸡城”,以其独特的土鸡料理和鲜美的地方特色菜肴而...

    搞定电脑故障 识破卖家大坑

    学会安全模式启动、系统还原、重装系统等技巧,能帮助我们排查问题。同时,保持软件及时更新,安装杀毒软件防止病毒、恶意软件侵入,也是防止软件故障的重要措施。 在面对电脑故障时,我们需要保持冷静,根据故障...

    区块链社群管理要避免的8大坑.pdf

    参考其他成功的社群运营模式,例如运营研究社的午间播报,或者EOS社群的日常活动安排。 6. 运营人员与技术团队的沟通协作:运营人员需要了解足够的技术知识来回答社群中出现的技术问题。当遇到技术问题时,可以定期...

    大坑旅游资讯网.pptx

    【大坑旅游资讯网】是一个专门针对大坑地区旅游业的在线平台,旨在为游客提供全面、个性化的旅游信息。该网站由一个团队在杨子青老师的指导下开发完成,旨在整合大坑景点与周边商家信息,打造一个集电子地图、个性化...

    “大坑湖”沧桑巨变.docx

    “大坑湖”沧桑巨变正是一段活生生的历史见证,它不仅映射了城市的变迁,更是企业自我救赎、重焕生机的生动案例。 秦皇岛市的大坑湖,曾是一片不为人知的城市荒地,长期被遗忘在城市角落。然而,随着城市化进程的...

    深入浅出玩转FPGA 吴厚航

    **深入浅出玩转FPGA**,这是一本旨在帮助读者理解并掌握FPGA(Field-Programmable Gate Array)技术的专业书籍。作者吴厚航以其丰富的经验和深入的理解,为初学者和有经验的工程师提供了全面且易懂的FPGA学习路径。 ...

    新能源汽车应避开哪些技术大坑.pdf

    他建议加大充电基础设施的投入,并鼓励车企探索新的商业模式以应对成本压力。 再者,新能源汽车在市场竞争力上面临挑战,尤其是在后补贴时代。企业不应单纯依赖政策导向,而应以市场需求为驱动,否则可能导致发展...

    人生大坑:操别人的心太多,干自己的事太少.pdf

    从给定的文件标题、描述以及部分内容来看,主要围绕着如何高效利用个人时间和精力,避免陷入所谓的“人生大坑”,即过度关注他人事务而忽视自我成长的现象。以下是从该材料中提炼出的关键知识点: ### 1. 避免...

    跨公网调用的大坑与架构优化方案

    ### 跨公网调用的大坑与架构优化方案 在当今高度互联的信息技术环境中,企业和服务提供商经常需要跨公网调用第三方服务。这种调用模式带来了诸多便利,但也隐藏着一些风险,尤其是当第三方服务出现问题时可能会对...

    java配置GDAL库的大坑

    "Java 配置 GDAL 库的大坑" Java 配置 GDAL 库时容易遇到的问题是版本不一致导致的错误。GDAL 库是一个开源的地理信息系统(GIS)库,提供了对栅格和矢量数据的支持。在 Java 中使用 GDAL 库需要将其配置到 Java ...

    小米8手机刷机大坑,后人注意

    前言 开始之前,吐槽一下国内关于手机的技术论坛,它们已经要绝迹了。小米官方论坛居然关了,搜到的结果都指向了新的网站,里面成了网友自拍园地。看来小米是决心要脱离极客,走向高端拍照,逐渐远离...用了2年的小米8

    大坑仔水库工程施工设计方案.doc

    《大坑仔水库工程施工设计方案》详述了该工程项目的设计理念、施工流程以及关键工程措施,旨在确保水库建设的安全、高效和可持续。以下是根据文档内容提炼出的相关知识点: 一、编制原则和编制依据 1. 编制原则: ...

    斯坦福大学iOS开发教程2011年秋Lecture 5

    `:除了倒置竖屏模式外,支持其他所有方向。 - **视图帧调整**:当支持某个旋转方向时,控制器的所有子视图的帧将会根据屏幕的方向变化进行调整,这些调整基于视图的“struts and springs”。 ##### 4. Struts and...

    es6 state&props设置大坑1

    在React.js开发中,`state`和`props`是两个非常关键的概念,它们共同构成了组件的数据模型。在ES6的类语法中,处理`state`和`props`的...理解并正确使用这些特性,能帮助我们避免“大坑”,提高代码质量和可维护性。

    Jwt隐藏大坑,通过源码揭秘.doc

    JWT(JSON Web Tokens)是一种广泛使用的轻量级身份验证机制,它允许安全地在客户端和服务器之间传输信息。...开发者需要关注编码一致性、验证参数的设置以及正确应用认证中间件,以避免遇到文中提到的 "隐藏大坑"。

    百度UEditor完整源码 v1.4.3.2.zip

    UM的主要特点就是容量和加载速度上的改变,主文件的代码量为139k,而且放弃了使用传统的iframe模式,采用了div的加载方式, 以达到更快的加载速度和零加载失败率。 现在UM的第一个使用者是百度贴吧,贴吧每天几...

    关于微信小程序生产环境体验版获取不到openId的问题(大坑)

    我们知道openid是微信用户验证的重要标识,支付功能严重依赖这个东西,之前我们做微信支付的时候是通过在微信客户端直接调用官方接口,通过传code参数来调用,下面这样 getOpenId(){ //获取用户的openid ...

    第三章 跳过运营数据分析和挖掘的“大坑”1

    然而,聚类分析并非没有挑战,特别是数据异常和大规模数据处理这两个“大坑”,更是时常给数据分析带来不小的困扰。本章将深入探讨聚类分析过程中需要注意的问题,以及如何妥善处理这些问题以跳过这些运营数据分析中...

    jboss4.0.5-GA在使用RMI时的大坑

    标题中的“jboss4.0.5-GA在使用RMI时的大坑”指的是在使用JBOSS 4.0.5 GA版本时,如果涉及到远程方法调用(Remote Method Invocation, RMI)可能会遇到的一些常见问题或陷阱。在描述中提到了一个博客链接,虽然没有...

Global site tag (gtag.js) - Google Analytics