原文地址:http://www.iefans.net/ie-jianrong-moshi-mogui-tianshi/

每当我接到电话或者是PM和我说:“那个xxx版型怎么跑掉了”或者说:“那个xxx的页面连接(Ajax 连接)怎么点下去页面只显示图和文字而其他部份都不见了”?通常我会问两个问题:你是不是用IE?请问你的IE版本是多少?通常来说,对方都是使用IE,而如果使用的是IE7,我只能在心理呐喊:“天哪、拜托可不可以升级或换浏览器啊”然后用客气的口吻把心理想的和对方沟通。如果不能换,那我只能拿掉一些比较新技术的东西,例如Ajax、CSS3等。不过有时候我会遇到对方用的是比较新的IE,IE8以上,但是对方再使用网站会有问题,例如,点下ajax连接竟然直接显示Ajax内容而不是更新到页面某一个位置,或者Css整个跑掉,甚至页面空空的因为浏览器看不懂某个JS Framework。这些其实让我头痛了不久,因为在我电脑同样的IE明明就不会啊?后来我终于找到了解法,也终于弄懂到底是怎么一回事,原来是IE的“兼容模式(Compatibility View)。(如果对接下来内容不感兴趣,或者急需知道答案,请直接卷到最后)。

何为IE兼容模式

在早起IE8之前,那个时候IE浏览器还属于比较独大的情况,那个时候他有很多东西是和网络的Standard不太一样。譬如他有自己才看的懂得自定义Tag。作为那个时代,很多网站都是以那个时候的IE作为目标浏览器去写的网页。随著时间的进步,微软意识到自己搞自己的是不行的,需要跟Web Standard一样,慢慢的以前那些旧的只属于IE有的东西就在新的IE里面没有了。但是为了以前浏览器而设计的网站要怎么办?他们就处于很尴尬的局面,因为如果不支持很多旧网站除了会跑版以外最要命是有些功能都会有问题。为了解决这个问题,微软在IE8以后很佛心的加入了所谓的兼容性模式,也就是能够在旧的网站使用兼容性模式浏览,而一切正常,而到比较新的网站就用正常模式浏览。听起来很棒,有问题的旧网站使用IE 兼容模式,新网站使用正常模式。但是这个有一个前提, 那就是使用者要知道兼容性模式的意义和如何切换

兼容性模式如何变成问题

假设今天我用兼容性模式浏览一个比较新的网站,会发现有很多问题。首先,很多Jquery的东西都会怪怪的,像Ajax就不起作用了,或者一些JS UI Framework就完全毁掉了。那你或许会说,就不要开兼容性模式不就好了?但问题是很多使用者不知道这个,而你和他介绍他也不一定听得懂。而最大的问题是,兼容性模式这个东西是可以设定说一直开启。在一些公司里面,兼容性模式是预设开启的,意味著他们浏览很多网页都是处于那种状态,而使用者不一定知道如何把它关掉。

微软的解决办法

微软在 这一篇有提到关于如何解决兼容性问题。他说,首先网页一定要设定docType,如果不设定,就会以Quirks mode(IE5)浏览。但问题是如果使用者设定使用兼容模式浏览,就算有docType他也会以兼容模式浏览,那该怎么办?微软因此说我们可以加一个metatag告知要使用的IE版本,而也是使用这个就能够强制不要使用兼容模式浏览。 那个“IE=Edge”表示使用目前IE最新的正常模式去浏览。当然,你也可以指定要使用哪一个版本的IE去浏览。

加上Chrome=1

我在网络上搜索的时候,发现有些人会在最后面加上Chrome=1,变成: 好奇的去搜索了一下,发现到 StackOverflow也有人问了相同问题,才发现原来Chrome有一个IE Add on叫做Chrome Frame,而作用就是在IE内使用Chrome来显示页面,这样老旧的IE就可以浏览一些新的页面也不出问题,而那个Chrome=1就表示如果有装,就启用。

结语

其实微软弄出兼容模式还满聪明的,不过就像人们常说的:“有一好,就没有两好”,它带来的衍生问题如果没有遇到过还真不知道为什么页面会出问题。不过,现在网络发达,基本上都可以搜索的到,这一篇只是我自己的总结而已。via:alantsai

IE兼容模式 - 魔鬼还是天使?相关推荐

  1. 360浏览器5兼容模式吗_Vue-cli项目,打包生产模式,部分用户360浏览器极速模式下奔溃...

    一直使用macOS系统下chrome浏览器下开发,仅仅使用到ant design pro vue 组件库,默认的脚手架配置. 客户使用win7下360安全浏览器访问,自动变成"兼容" ...

  2. sgSpeedMode.js判断360浏览器是“兼容模式”,提示使用“极速模式”

    为了达到目的,当用户使用的是浏览器"兼容模式"就会出现以下提示 //极速模式提示信息-最简练的判断方式 if (navigator.userAgent.indexOf(" ...

  3. css在兼容模式下无法引用_如何在CSS中使用深色模式

    css在兼容模式下无法引用 by Frank Lämmer 由FrankLämmer 如何在CSS中使用深色模式 (How to get dark mode working with CSS) I h ...

  4. IE10浏览器兼容模式

    现在的机器很多都是win7.win8了.而win7.win8现在使用的IE浏览器基本上也是IE9.IE10. 那么如何快速调出IE10的兼容模式呢? 其实很简单的,如果是台式机只需要按"F1 ...

  5. c#让程序在WIN7下兼容模式运行

    以前在xp下开发,最近全部转移到WIN7下,发现程序运行会有个小问题,就是获取系统当前是否静音的时候,以前在XP下运行的好好的,到了WIN7下就不行了,后面想到用管理员方式运行,还是不行,擦,后面突然 ...

  6. 解决360浏览器兼容模式的页面显示问题

    解决360浏览器兼容模式的页面显示问题 参考文章: (1)解决360浏览器兼容模式的页面显示问题 (2)https://www.cnblogs.com/njy888888/p/7827200.html ...

  7. 解决傲游浏览器没有兼容模式

    自从升级到傲游4.1,我就再也没找到过兼容模式,公司测试程序跑的就是IE模式,但是IE又卡的要死,所以必须找一下,翻遍了百度找到一个类似的答案,然后自己摸索了一下,就找到了傲游浏览器兼容模式设置. 1 ...

  8. 让你的网站在IE8的兼容模式下运行

    众所周知,微软的Internet Explorer团队一直在致力于将IE8打造为最符合业内标准的浏览器,所不幸的是,当前并非所有的网站都认同这些标准.如果你担心你的网站在IE8的标准模式下不能正常工作 ...

  9. Win64 驱动内核编程-9.系统调用、WOW64与兼容模式

    系统调用.WOW64与兼容模式 这种东西都是偏向于概念的,我就把资料上的东西整理下粘贴过来,资料来源于胡文亮,感谢这位前辈. WIN64 的系统调用比 WIN32 要复杂很多,原因很简单,因为 WIN ...

最新文章

  1. CLH锁 、MCS锁
  2. 驰骋工作流携手山东金义,实施落地上海光大银行
  3. 【并发编程】并发编程的三大特性
  4. RocketMQ最佳实战
  5. r语言上机文本分析与词云绘制_倚天屠龙记的文本分析
  6. 在C#中调用一个dll函数,其中有个参数为 hdc,如何在C#中得到这个值并传给这个参数呢?
  7. (转载) min()的宏定义中的(void) (_x == _y)的含义
  8. 多线程条件变量(pthread_cond_wait)用法
  9. Odoo链接magento纪实
  10. typedef函数指针用法 .
  11. OpenStack Cinder发展动态系列--Austin峰会
  12. 个人名义申请的支付接口。支付聚合网站汇总
  13. 在线JSON转Mongoose工具
  14. win11如何进行bug反馈 windows11进行bug反馈的步骤方法
  15. python编程入门-Python编程:从入门到实践 PDF 中文扫描版
  16. Socket编程例子
  17. TeamViewer 远程应用不显示,空白解决方案
  18. Linux命令行使用总结
  19. 郭为重读麦肯锡报告:神州数码转型七年之痒
  20. 哈佛商业评论: 从商战到反恐,如何建立指挥系统内外的“网络”

热门文章

  1. 【数据库】谈谈分库分表吧?
  2. 【笔记】SQL 6-2
  3. pip install warning
  4. oracle scott用户来历,Oracle应用之Scott用户简介
  5. 今日头条 CEO 张一鸣:面试了 2000 个年轻人,混得好的都有这 5 种特质
  6. 在Mac OS X下获得电脑屏幕中任意颜色的RGB值
  7. 【铁合金】10日港口锰矿现货价格走强
  8. TCH值为0的block为什么也出现在X$BH中?
  9. Flink SQL 自定义 redis connector
  10. JavaWeb投票系统