作为一个前端开发,在面对如此繁多各版本的浏览器特别是具有中国特色的“浏览器”,总是会被问及各种各样的问题,我的页面怎么跑啦……这个这个怎么不起作用啊!OMG的……什么时候哪个浏览器能一统天下就好啦!
其实关于各个浏览器的兼容问题,作为一个前端来说那是首要了解的东西,手到擒来。但是,唯一想不明白的是那些明明用高版本的IE浏览器却开启兼容模式的人。当然,知道IE浏览器兼容模式是什么东东的人除外,那些不知道是什么东东,却非要开兼容模式的人真心不知道是一种什么心态,这好比是看某电视剧要开启虐心模式?
那么问题来了,什么是兼容模式呢?
在早起IE8之前,那个时候IE浏览器还属于比较独大的情况,那个时候他有很多东西是和网络的Standard不太一样。譬如他有自己才看的懂得自定义Tag。作为那个时代,很多网站都是以那个时候的IE作为目标浏览器去写的网页。随著时间的进步,微软意识到自己搞自己的是不行的,需要跟Web Standard一样,慢慢的以前那些旧的只属于IE有的东西就在新的IE里面没有了。
但是为了以前浏览器而设计的网站要怎么办?他们就处于很尴尬的局面,因为如果不支持很多旧网站除了会跑版以外最要命是有些功能都会有问题。为了解决这个问题,微软在IE8以后很佛心的加入了所谓的兼容性模式,也就是能够在旧的网站使用兼容性模式浏览,而一切正常,而到比较新的网站就用正常模式浏览。听起来很棒,有问题的旧网站使用IE 兼容模式,新网站使用正常模式。但是这个有一个前提,那就是使用者要知道兼容性模式的意义和如何切换。
当你被编辑追着问,某个页面在什么360浏览器的兼容模式下……!真是令人崩溃,可是崩溃归崩毁,总得寻得解决方法才行!So……就在HTML的head上添加如下代码,使 IE 使用固定的渲染模式:
<meta http-equiv="X-UA-Compatible"content="IE=8"><!--以IE8模式渲染-->
<meta http-equiv="X-UA-Compatible"content="IE=7"><!--以IE7模式渲染-->
那么问题又来了,如果在某IE版本下只有不使用兼容模式页面才能显示正常,但是如果设定了该版本的固定渲染模式,就会导致另一个IE版本出现问题。那就需要针对不同的IE版本来分别禁用兼容模式了。
因为只有IE8版本以后才出现兼容模式的,那就可以这样来:
<meta http-equiv="X-UA-Compatible"content="IE=9; IE=8; IE=7; IE=EDGE">
这样设定就会使IE中设置兼容模式的按钮消失,只能通过按F12打开“开发人员工具”来检查浏览器模式啦。