ie8常见兼容问题及解决方法总结(代码片段)

toggle toggle     2023-02-14     620

关键词:

        IE8及以下版本的浏览器对前端来说就是一个BUG的存在,但是总也绕不过去,非技术性官网一般会要求网站兼容到ie8,有时候甚至要到ie7,总之IE8是一定要能hold住。

最近公司一个比较小众的项目,因为要通过控件去操作硬件设备的配置,用到object控件通过xml传递数据,所以只能在IE内核的浏览器上面运行。项目调试也是在ie浏览器上,这算是我ie8的一次亲密接触吧。

        总结了一些遇到的比较常见情况以及解决方法,不求全面,就当是笔记吧,以备以后查看。

一、对不兼容html5标签和css3的一些属性的情况,可以使用如下js插件

1)html5shiv.js、html5media.js

2)respond.js

3)modernizr(一款兼容css3、html5等元素的插件)

二、css方面:

1使用@media实现IE hack的方法

有些时候为了实现IE下的某些效果会使用一些hack手段来实现目的。比如说使用“”“”“9”来仅让IE某些版本识别,而对于现代浏览器来说,他会直接无视这些代码。

@media screen and(-ms-high-contrast:active),(-ms-high-contrast:none) IE10--IE11

@media screen and (min-width:0) IE9--IE11

@media screen9 IE7及以下

@media screen,screen9 IE8及以下

@media screen IE8

@media screen IE8及以上

 

2、css3选择器

技术分享图片

3、支持box-sizing属性

如果 IE 8 中元素宽度是 min-width 决定的,则浏览器直接忽略了 box-sizing: border-box

4、不兼容calc():可以用js去实现计算元素宽高

5、不兼容line-height

     line-height:32px;

     line-height: 32px9; /*IE8*/

    *line-height: 32px; /* IE7支持 */

    _line-height: 32px; /* IE6支持 */

    -ms-line-height: 32px;/*IE9+支持*/

    -webkit-line-height:32px; /*chrome safair*/

    -moz-line-height: 32px;/*火狐*/

6、不兼容rgba()

background-color: rgba(0,0,0,.5);
background-color:#000;
filter:alpha(opacity=50);

7、不兼容border-radius

只能使用图片代替了(整体背景图或者四个弧角的背景图)

8、不兼容text-overflow

首先平时用的时候要配合使用overflow: hidden; white-space: nowrap; 

这两个属性让溢出隐藏和不换行,然后IE8用的时候记得不要加

word-berak:break-all; word-wrap:break-word; 

这样断开了,在IE8里面是不会变成省略号的(但是在IE6/7/FF/Chrome都没有问题),其实都单行省略了,本来也没有必要断词

所以一般标准组合就是

overflow: hidden; 

white-space: nowrap; 

-o-text-overflow: ellipsis; /* for Opera */ 

text-overflow: ellipsis; /* for IE */ 

基本通杀所有浏览器了

最后像<a>这类默认非块的元素,要加上display:block;才有效果,还有别忘了width或者max-width。

9、不兼容background-size

filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )

enabled:可选项。布尔值(Boolean)。设置或检索滤镜是否激活。 true:默认值。滤镜激活。 false:滤镜被禁止。

sizingMethod:可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。 crop:剪切图片以适应对象尺寸。 image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸。 scale:缩放图片以适应对象的尺寸边界。

src:必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

10、不兼容transform:使用filter的Matrix(矩阵)

11iframe边框通过css设定在FF下正常在ie下却还存在边框,设置 frameborder=no
border=0可以去掉讨厌的iframe边框。
代码如下:

<iframe src="url“ id="iframe" width="0" height="0" frameborder="no"
border="0"></iframe>

三、js及其他方面

1、对象不支持“forEach”属性或方法

 

if ( !Array.prototype.forEach ) 
  Array.prototype.forEach = function forEach( callback, thisArg ) 
    var T, k;
    if ( this == null ) 
      throw new TypeError( "this is null or not defined" );
    
    var O = Object(this);
    var len = O.length >>> 0;
    if ( typeof callback !== "function" ) 
      throw new TypeError( callback + " is not a function" );
    
    if ( arguments.length > 1 ) 
      T = thisArg;
    
    k = 0;
    while( k < len ) 

      var kValue;
      if ( k in O ) 
          kValue = O[ k ];
          callback.call( T, kValue, k, O );
      
      k++;
    
  ;

 

2、对象不支持“trim”属性或方法

e8及以下 String 没有trim 方法

 

if ( !String.prototype.trim ) 
  String.prototype.trim = function () 
    return this.replace(/(^s*)|(s*$)/g, "");
  

 

3echarts

使用echarts第二版能兼容ie8,而第三版会提示更新浏览器。

4、视频播放器

使用的是jplayer插件

5、不兼容placeholder

使用js插件:jquery.placeholder.js

https://github.com/mathiasbynens/jquery-placeholder

6input回车提交表单

在登陆界面,输入用户名密码后按回车键IE浏览器弹出消息框,“你查看的网页正在试图关闭窗口”

原因:按回车键默认自动提交表单引起

技术分享图片

 

解决方案:

<!-- enter不会自动提交数据 -->

<form action="www.baidu.com" method="post" onkeydown="if(event.keyCode==13)return false;">

<input type="text" value="" />

<input type="text" value="" />

<button>提交</button>

<!-- 或在对应input上添加,同时建议取消自动填充,因为mac下会有问题<input type="text" value="" autocomplete="off" onkeydown="if(event.keyCode==13)return false;" /> -->

</form>

7、重新加载缓存问题

css文件更新后,刷新后IE浏览器没有效果。原因:IE浏览器会判断刷新的url是否有参数,如果有参数,那么参数是否有变化。如果没有参数,或者参数没有变化。那么IE浏览器会自作聪明的将缓存的内容加载到页面,而不进后台获取。

解决方案:

1)在url末尾加上变化的无意义的参数(时间戳、随机数等等);

例如:url = "xxAction_method?time=" + new Date().getTime();

<link rel="stylesheet" href="./css/set.css?v=2018">

2)在页面中设置不启用缓存,即cache属性为false。

jQuery.ajaxSetup(cache:false);

8IE 不打开F12开发人员工具无法执行js问题

在写网页的时候,使用ie做测试,都会开着开发者工具方便调试js。调试的时候都没啥问题,控制台显示一切正常,但是关闭了开发者工具后,ie竟然不执行js了。

原因部分IE版本是不支持console的,还有部分奇怪的IE版本比如IE8/IE9在开启开发者工具时才支持console,我擦真是奇怪的设计。

解决方法发版本时注释掉所有console.log 或者在每次调用前测试下console是否可用

if(window.console)//测试是否可用

    console.log("login start");//可用的话,输出信息

 

参考https://blog.csdn.net/ganle/article/details/79742303

 

常见浏览器兼容性问题及解决办法总结(持续更新中...)(代码片段)

 1.不同浏览器的标签默认的外补丁(margin)和内补丁(padding)不同;解决办法:在CSS文件开头,加*margin:0;padding:0;,把所有标签的margin和padding设置为0即可。2. 在IE6中,块元素设置float并且有水平方向的margin时,margin显示出来会... 查看详情

html常见兼容性问题及解决方法

1.双边距BUGfloat引起的使用display2.3像素问题使用float引起的,使用dislpay:inline-3px3.超链接hover点击后失效使用正确的书写顺序linkvisitedhoveractive4.Iez-index问题给父级添加position:relative5.Png透明使用js代码改6.Min-height最小高度!Important解... 查看详情

mcake活动维护常见问题记录(代码片段)

  ★ ★ ★ ★ ★ ★ ★ ★ ★ ★pc端问题及解决方法★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 一、pc.弹窗,背景兼容ie8的 查看详情

兼容性问题处理总结(代码片段)

...在的console.log(eval("("+str+")"))3.获取上一个哥哥元素节点,兼容所有浏览器functiongetBrother(curEle)varpre=curEle.previousSibling;while(pre)if(pre.nodeType===1)returnpre;pre=pre.previousSibling;//pre等于哥哥节点的哥哥节点;4.bind传参的方式和call方法一样;I... 查看详情

ie8各种兼容问题梳理总结,ie8+layui+js等[持续更新](代码片段)

无力吐槽!现在还在用IE8的组织简直就是反人类。这种组织也不必搞什么信息化,搞也搞不好,浪费人力物力。IE8不支持js中的map方法错误描述:  使用layui的穿梭框,在获取右边已选数据时,使用map方法把对象数据转换为数组/... 查看详情

一个小方法解决rgba不兼容ie8(代码片段)

所以在ie8中设置半透明就要费点脑子了。从大神那里得知可以使用ie的filter来解决这个问题,css代码如下:background:rgba(255,255,255,0.1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#19ffffff,endColorstr=#19ffffff);第二句话的意思就是当... 查看详情

javascript常见兼容问题汇总js(主要针对ie)(代码片段)

js中有很多兼容问题,今天先来讨论一些常用的关于低版本IE的兼容。(基本上都是为了兼容IE8一下的)一、事件对象的兼容问题(event)比如想要获取鼠标坐标时候需用到event,在高级浏览器中会主动传递该参数,但是在IE8及以... 查看详情

应用打包及多端兼容总结(代码片段)

#应用打包失败在window系统中打包支持其他系统的应用,打包不成功。报了以下错误macFAILURE,no.datfilelinux64FAILURE,no.datfilelinuARM32FAILURE,no.datfile解决方法:找到sciterSDK下的package.js文件,修改以下代码路径:sciter/quark/package.js修改位... 查看详情

前端开发中常见的浏览器兼容性问题及解决方案(代码片段)

文章目录前言一、浏览器四大内核二、主流兼容问题(一)浏览器引擎(二)兼容问题的原因(三)为什么浏览器会存在兼容性问题?(四)处理兼容问题的思路1.要不要做?2.做到什么程度?... 查看详情

h5兼容问题及解决方法(代码片段)

Meta基础知识:H5页面窗口自动调整到设备宽度,并禁止用户缩放页面//一、HTML页面结构<metaname="viewport"content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>//width设置viewport宽度,为一个正整数, 查看详情

ie8兼容问题(代码片段)

input标签placeholder1.input里面的placeholder属性,在pc端用的特别好,但是万恶的ie8,placeholder竟然不支持。于是找到一种方法解决在ie8中placeholder无效的事$(function()//如果不支持placeholder,用jQuery来完成if(!isSupportPlaceholder())//遍历所有inpu... 查看详情

mysql修改root密码的方法常见问题及解决方法(代码片段)

...修改密码忘记密码的情况使用--init-file使用--skip-grant-tables常见问题及解决密码没有加上引号ERROR1819(HY000)降低策略的级别单独修改策略项ERROR1396(HY000)ERROR1064(42000)使用--skip-grant- 查看详情

mysql修改root密码的方法常见问题及解决方法(代码片段)

...修改密码忘记密码的情况使用--init-file使用--skip-grant-tables常见问题及解决密码没有加上引号ERROR1819(HY000)降低策略的级别单独修改策略项ERROR1396(HY000)ERROR1064(42000)使用--skip-grant- 查看详情

12-2107课上问题分析及总结(代码片段)

文章目录Day01~微服务架构入门核心知识点常见问题分析常见Bug分析课后作业作业答案Day02~Nacos注册中心入门核心知识点常见问题分析常见Bug分析课后作业Day03~服务发现及调用核心知识点常见问题分析常见Bug分析课后作业Day01~微服... 查看详情

ie8的兼容性问题

IE的兼容性问题是前端开发人员的老大难问题,不过随着时代的发展,IE6逐渐的被淘汰,现在以及很少有网站兼容IE6了,一般都兼容到IE8,现在我总结了一些IE8的兼容性问题及解决方法。1.使用meta标签调节浏览器的渲染方式IE8中... 查看详情

hadoop平台搭建的常见错误及解决方法(代码片段)

问题一警告信息如下:JavaHotSpot™64-BitServerVMwarning:Youhaveloadedlibrary/usr/local/hadoop252/lib/native/libhadoop.sowhichmighthavedisabledstackguard.TheVMwilltrytofixthestackguardnow.It’shighlyrecommen 查看详情

jforum二次开发中常见问题及解决方法(代码片段)

1.JForum直接搜索关键字,跳到错误页面,显示关键字解析错误。解决办法:LuceneSearch.java的performSearch方法内,我们改为对于搜索中发生的任何异常都返回空的结果集,替换代码如下:1thrownewSearchException(e);改... 查看详情

proguard常见问题及解决套路(代码片段)

ProGuard是一个压缩、优化和混淆Java字节码的工具,非常好用。本篇文章总结一下许多人在使用ProGuard时经常遇到的问题。我把在使用ProGuard时经常遇到的问题分为两类,分别是导致构建失败的编译时问题,以及构建通过但运行时... 查看详情