ie最新浏览器的兼容模式怎么设置(IE浏览器兼容问题总结)

浏览器的盒子模型分为两类:解决方法:,我来为大家科普一下关于ie最新浏览器的兼容模式怎么设置?以下内容希望对你有帮助!

ie最新浏览器的兼容模式怎么设置(IE浏览器兼容问题总结)

ie最新浏览器的兼容模式怎么设置

一、标准盒模型和怪异盒模型

浏览器的盒子模型分为两类:

  1. 标准的W3C盒子模型。 chrome、firefox、IE9、IE10、IE11的盒模型为标准盒模型。
  2. IE6-8的盒子模型。多了Offset。

解决方法:

使用DOCTYPE声明<!DOCTYPE html>,让浏览器使用标准模式

二、IE9 以下浏览器不能使用 opacity

12345678<style> .mydiv { opacity: 0.5; filter: alpha(opacity=50); /*IE6-IE8我们习惯使用filter滤镜属性来进行实现*/ filter: progid:DXImageTransform.Microsoft.Alpha(style=0, opacity=50); /*IE4-IE9都支持滤镜写法progid:DXImageTransform.Microsoft.Alpha(Opacity=xx)*/ } </style> <div class="mydiv"></div>

三、new Date('2019-4-18') IE不兼容

val= '2019-4-18' 想要获取下一天的日期 也要返回该格式。

123456var dd = new Date(val); dd.setDate(dd.getDate() 1);//获取AddDayCount天后的日期 let Y = dd.getFullYear() '-'; let M = (dd.getMonth() 1 < 10 ? '0' (dd.getMonth() 1) : dd.getMonth() 1) '-'; let D = (dd.getDate() < 10 ? '0' dd.getDate() : dd.getDate()) ' '; return (Y M D '00:00:00');

IE中会报NAN的错误 因为IE无法识别new Date('2019-4-18')

  • 解决方法一:new Date('2019/4/18')
  • 解决方法二: val 转换为 Thu Apr 18 2019 15:33:55 GMT 0800 (中国标准时间) 原始格式

12val.setMinutes(val.getMinutes() - val.getTimezoneOffset() 24 * 60); //获取明天 需要多加24小时*60分钟 return val.toJSON().slice(0, 10) ' 00:00:00'

四、IE事件绑定4.1、W3C方式

1element.addEventListener('click', function(e){}, false);

W3C绑定的优点:

  • 1.该方法同时支持事件处理的捕获和冒泡阶段。事件阶段取决于addEventListener最后的参数设置:false (冒泡) 或 true (捕获)。
  • 2.在事件处理函数内部,this关键字引用当前元素。
  • 3.事件对象总是可以通过处理函数的第一个参数(e)捕获。
  • 4.可以为同一个元素绑定你所希望的多个事件,同时并不会覆盖先前绑定的事件

W3C绑定的缺点:

  • 1.IE不支持,你必须使用IE的attachEvent函数替代。
4.2、IE方式

1element.attachEvent('onclick', function(){});

IE方式的优点

  • 1.可以为同一个元素绑定你所希望的多个事件,同时并不会覆盖先前绑定的事件。

IE方式的缺点

  • 1.IE仅支持事件捕获的冒泡阶段;
  • 2.事件监听函数内的this关键字指向了window对象,而不是当前元素(IE的一个巨大缺点);
  • 3.事件对象仅存在与window.event参数中;
  • 4.事件必须以ontype的形式命名,比如,onclick而非click;
  • 5.仅IE可用。你必须在非IE浏览器中使用W3C的addEventListener.
4.3、兼容写法

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667var eventshiv = { // event兼容 getEvent: function(event) { return event ? event : window.event; }, // type兼容 getType: function(event) { return event.type; }, // target兼容 getTarget: function(event) { return event.target ? event.target : event.srcelem; }, // 添加事件句柄 addHandler: function(elem, type, listener) { if (elem.addEventListener) { elem.addEventListener(type, listener, false); } else if (elem.attachEvent) { elem.attachEvent('on' type, listener); } else { // 在这里由于.与'on'字符串不能链接,只能用 [] elem['on' type] = listener; } }, // 移除事件句柄 removeHandler: function(elem, type, listener) { if (elem.removeEventListener) { elem.removeEventListener(type, listener, false); } else if (elem.detachEvent) { elem.detachEvent('on' type, listener); } else { elem['on' type] = null; } }, // 添加事件代理 addAgent: function (elem, type, agent, listener) { elem.addEventListener(type, function (e) { if (e.target.matches(agent)) { listener.call(e.target, e); // this 指向 e.target } }); }, // 取消默认行为 preventDefault: function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, // 阻止事件冒泡 stopPropagation: function(event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } } };

五、样式兼容IE5.1、不同浏览器的默认样式存在差异

1<link href="https://cdn.bootcss.com/normalize/7.0.0/normalize.min.css" rel="stylesheet">

或者:

1234* { margin: 0; padding: 0; }

5.2、解决 ie9 以下浏览器对 html5 新增标签不识别的问题

123<!--[if lt IE 9]> <script type="text/javascript" src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script> <![endif]-->

5.3、解决 ie9 以下浏览器不支持 CSS3 Media Query 的问题

1<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>

5.4、解决 IE 9 10 11 等浏览器不支持 标签的问题

1<script src="https://cdn.bootcss.com/picturefill/3.0.3/picturefill.min.js"></script>

5.5、IE6 双倍边距的问题

在ie6 中设置浮动,同时又设置 margin,会出现双倍边距的问题。

1display: inline;

5.6、解决 IE6 不支持 fixed 绝对定位以及IE6下被绝对定位的元素在滚动的时候会闪动的问题

123456789/* IE6 hack */ *html, *html body { background-image: url(about:blank); background-attachment: fixed; } *html #menu { position: absolute; top: expression(((e=document.documentElement.scrollTop) ? e : document.body.scrollTop) 100 'px'); }

5.7、解决 IE6 不支持 min-height 属性的问题

12min-height: 350px; height: 350px;

5.8、让 IE7 IE8 支持 CSS3 background-size属性

由于 background-size 是 CSS3 新增的属性,所以 IE 低版本自然就不支持了,但是老外写了一个 htc 文件,名叫 background-size polyfill,使用该文件能够让 IE7、IE8 支持 background-size 属性。其原理是创建一个 img 元素插入到容器中,并重新计算宽度、高度、left、top 等值,模拟 background-size 的效果。

12345678910111213html { height: 100%; } body { height: 100%; margin: 0; padding: 0; background-image: url('img/37.png'); background-repeat: no-repeat; background-size: cover; -ms-behavior: url('css/backgroundsize.min.htc'); behavior: url('css/backgroundsize.min.htc'); }

5.9、IE6-7 line-height 失效的问题

问题:在ie 中 img 与文字放一起时,line-height 不起作用

解决:都设置成 float

5.10、ie6/7/8 鼠标显示小手指

12cursor:hand; /*IE浏览器*/ cursor: pointer;/*其他浏览器*/

六、浏览器 CSS 兼容前缀

12345-o-transform:rotate(7deg); // Opera -ms-transform:rotate(7deg); // IE -moz-transform:rotate(7deg); // Firefox -webkit-transform:rotate(7deg); // Chrome transform:rotate(7deg); // 统一标识语句

七、键盘事件 keyCode 兼容性写法

1234567891011var inp = document.getElementById('inp') var result = document.getElementById('result') function getKeyCode(e) { e = e ? e : (window.event ? window.event : "") return e.keyCode ? e.keyCode : e.which } inp.onkeypress = function(e) { result.innerHTML = getKeyCode(e) }

八、窗口大小的兼容写法

1234567891011121314151617// 浏览器窗口可视区域大小(不包括工具栏和滚动条等边线) // 1600 * 525 var client_w = document.documentElement.clientWidth || document.body.clientWidth; var client_h = document.documentElement.clientHeight || document.body.clientHeight; // 网页内容实际宽高(包括工具栏和滚动条等边线) // 1600 * 8 var scroll_w = document.documentElement.scrollWidth || document.body.scrollWidth; var scroll_h = document.documentElement.scrollHeight || document.body.scrollHeight; // 网页内容实际宽高 (不包括工具栏和滚动条等边线) // 1600 * 8 var offset_w = document.documentElement.offsetWidth || document.body.offsetWidth; var offset_h = document.documentElement.offsetHeight || document.body.offsetHeight; // 滚动的高度 var scroll_Top = document.documentElement.scrollTop||document.body.scrollTop;

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页