美文网首页
IE兼容模式(x-ua-compatible)

IE兼容模式(x-ua-compatible)

作者: 原来哥哥是万家灯火 | 来源:发表于2019-03-03 15:27 被阅读0次

1.微软为什么要设计这个属性?
因为高版本的ie,废除了一些老旧的、不符合w3规范的api或特性,并不直接向下兼容。以前针对低版本开发的程序,可能在高版本上就会出现问题,为了照顾大家的情绪,就设计了这个属性,让开发者可以叫新ie以以前的方式执行程序。

比如:

obj = document.getElementById("testdiv");
obj.addEventListener('click', function(){ alert('1') })

你可能很熟悉这个代码,但是ie8并不支持addEventListener,所以当时的开发人员就用了它支持的方式:

obj.attachEvent('onclick', function(){ alert('1') })

一直到ie10都还支持这个方法,ie11则不支持了。实际情况中,从头去改可能很麻烦。但用户用ie11打开这个网站可能就会出故障,为了避免这个问题,就可以告诉ie11以ie10的方式渲染。

2.指定方式有三种:

  • <meta http-equiv="x-ua-compatible" content="IE=10,chrome=1">
  • 接口设置响应头
  • 服务器直接配置

3.特点:

  • ie8开始支持,edge不支持。也就是说只有ie8、ie9、ie10、ie11支持。

  • 只能模拟比当前安装版本更低的版本,不能模拟更高版本。比如开发者设置了ie=10,ie11的用户打开是ie10方式渲染,ie9用户则还是9,或者用户在浏览器上自行设置的兼容视图版本。

  • ie=edge,是指以此客户端支持的最新版本渲染,如ie9就以9方式渲染,即使用户在浏览器上设置了其他版本ie兼容模式也无效。我本来还以为设置了ie=edge ,那些ie8\9的客户端就以最新的edge浏览器渲染了,还窃喜浏览器兼容竟然如此简单 o(╥﹏╥)o
    另外chrome=1几乎无用,因为晓得去下载chrome frame 的用户根本不得用ie,而且chrome frame在14年之后也不提供支持服务了。但最好还是加上。

4.检测 ie实际渲染方式:document.documentMode,edge无效。

5.demo

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=10,chrome=1">
  <title>Title</title>
  <style type="text/css">
    .wrap {
      position: relative;
      width: 100px;
      height: 100px;
      margin: auto;
      background-color: green;
    }

    .item {
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      width: 50px;
      height: 50px;
      background-color: blueviolet;
    }
  </style>
</head>
<body>
<div class="wrap" id="testdiv">
  <div class="item"></div>
</div>
<script type="text/javascript">
  obj = document.getElementById("testdiv");
  obj.attachEvent('onclick', function(){ alert('1') })
  // obj.addEventListener('click', function(){ alert('1') })
  // 切换至ie8,可见ie8连 transform 也不支持
</script>
</body>
</html>

浅析网页meta标签中X-UA-Compatible属性的使用
IE 兼容性标记 X-UA-Compatible 解释和用法

6.待续:
ie=EmulateIE8和ie=8的区别?
http-equiv还有哪些用?
http-equiv和response-header同时作用下,到底听谁的?

相关文章

网友评论

      本文标题:IE兼容模式(x-ua-compatible)

      本文链接:https://www.haomeiwen.com/subject/bovpuqtx.html