最近做了个兼容ie8的项目,把遇到的一些坑总结一下,欢迎大神指正,共勉。

一. js相关

1.  关于库的引用

jquery只能引用1.x的版本,swiper只能引用2.x的版本。

2. 动态生成的dom, $().click 方法为其添加点击事件,需用on 或 live 方法进行绑定。

3. ie8不兼容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++;
}
};
}

4. ie8不兼容indexOf, 可用如下代码兼容

if (!Array.prototype.indexOf){
Array.prototype.indexOf = function(elt /*, from*/){
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};

5. 获取target 对象应该这样获取

function getTarget(event) {
var e = window.event||event;
var target= e.target || e.srcElement;
}

6. 下载文件可用如下方式下载

var $downloadFileForm = $('<form class="hidden" enctype="multipart/form-data" method="post" action="url"></form>');
$downloadFileForm.attr({
}).appendTo('body');
$downloadFileForm[0].submit();
$downloadFileForm.remove();

7. 由于ie8不兼容FormData对象,需要通过表单提交的方式上传文件, 并且使用jquery.fom.js 库的ajaxSubmit 方法提交。

8. ie8 不支持placeholder,建议自己手写一个div定位到input上进行模拟,网上搜到解决方案有时候会定位出现问题。

9. 阻止冒泡点击事件

function click(e) {
e=window.event||e;
if(document.all){
e.cancelBubble=true;
}else{
e.stopPropagation();
}
}

二、css 相关

     1. 背景图片平铺问题,ie8 不支持background-size属性,所以需要滤镜解决

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='url', sizingMethod = 'scale');

2. 要使用css3 的相关属性,可引入ie-css3.htc 文件,引用方式如下,路径相对于html文件而不是css文件

behavior: url(ie-css3.htc);

3. ie8 不支持nth-child 伪类, 可用如下方式代替,不过比较繁琐

ul:first-child + ul
ul:first-child + ul + ul + ul
ul:first-child + ul + ul + ul + ul + ul

4. ie8 不支持rgba, 有半透明背景需求的可以使用opacity 代替,代码如下

opacity: 0.7;
-moz-opacity:0.7;
-khtml-opacity: 0.7;
filter:alpha(opacity=70);

先写到这里,想到了再补充。。

兼容ie8总结的更多相关文章

  1. 兼容IE8以下浏览器input表单属性placeholder不能智能提示功能

    当前很多表单提示使用了表单属性placeholder,可这属性不兼容IE8以下的浏览器,我自己写了一个兼容处理js // 兼容IE8以下浏览器input不能智能提示功能 if(navigator.ap ...

  2. 如何使用videojs兼容IE8浏览器

    需要在服务器下运行 首先我们需要下载videojs包 https://github.com/videojs/video.js/releases 这里简单写了一个小栗子 <!DOCTYPE htm ...

  3. jQuery validate兼容IE8写法

    最近做项目的时候遇到一个validate插件在IE8下面点击submit按钮没有执行检查的BUG 在chrome和FF,还有IE9以上都可以.百度了好多文章都没有找到解决方法,后面自己测试找到了问题. ...

  4. 兼容ie8 rgba()用法

    今天遇到了一个问题,要在一个页面中设置一个半透明的白色div.这个貌似不是难题,只需要给这个div设置如下的属性即可: background: rgba(255,255,255,.1); 但是要兼容到 ...

  5. 【转】让Bootstrap 3兼容IE8浏览器

    FROM : http://www.ijophy.com/2014/05/bootstrap3-compatible-with-ie8.html 最近在研究Bootstrap(官方,Github)这个 ...

  6. 让Bootstrap 3兼容IE8浏览器

    最近在研究Bootstrap(官方,Github)这个优秀的前端框架,Bootstrap最开始是Twitter团队内部的一个前端框架,所谓前端框架就是一个CSS/HTML框架,框架里面有下拉菜单.按钮 ...

  7. css样式设置图片半透明度,兼容IE8,火狐

    关于背景颜色透明的兼容浏览器的问题,一直是个问题,我所写的兼容IE8,和火狐,说是兼容所有浏览器我就没有测试,有兴趣的朋友可以自己测试下吧. background-color:white;filter ...

  8. 兼容ie8 rgba()用法 滤镜filter的用法

    原文  http://blog.csdn.net/westernranger/article/details/40836861 今天遇到了一个问题,要在一个页面中设置一个半透明的白色div.这个貌似不 ...

  9. bootstrap3 兼容IE8浏览器

    近期在使用bootstrap这个优秀的前端框架,这个框架非常强大,框架里面有下拉菜单.按钮组.按钮下拉菜单.导航.导航条.面包屑.分页.排版.缩略图.警告对话框.进度条.媒体对象等,bootstrap ...

  10. Bootstrap 3兼容IE8浏览器(转)

    Bootstrap是一个响应式的布局,你可以在宽屏电脑.普通电脑,平板电脑,手机上都得到非常优秀的布局体验.这种响应式的布局正是通过CSS3的媒体查询(Media Query)功能实现的,根据不同的分 ...

随机推荐

  1. 6、echarts使用的坑

    实例化id值要用唯一的,一个项目中不能用同一个id, 不然后面的样式覆盖前面的,且后面样式不显示.

  2. 将整数m的各位数字保存到数组A中

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/4 20:10 * @description ...

  3. poj 3422 最小费用流

    如果不是从费用流区做这个题几乎不会想到用费用流 点有权值很容易想到拆点 问题是求最大sum ...  把权值取负 这样最小费用流的相反数就是最大sum 源点S汇点T k为移动次数 矩阵中的点拆成入点出 ...

  4. ul的margin撑不开想要的距离的办法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. spring cloud

    如果是一个大型的网站,内部子系统较多.接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销:其次就是RPC框架一般都有注册 ...

  6. Java 通过getbean取出的类为什么要强转为接口类

    这个问题是之前一个同学问我的,这些是我在网上找到的资料,由于我自己也没有完全搞明白,先大概记录一下 首先问题是为什么在bean文件中注入的是实现类,但是通过getBean()取出的时候却必须强制转化为 ...

  7. 关于JDBC的批量操作executeBatch()所引发sql语句异常

    java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that correspon ...

  8. sqlserver 表循环-游标、表变量、临时表

    SQL Server遍历表的几种方法 阅读目录 使用游标 使用表变量 使用临时表 在数据库开发过程中,我们经常会碰到要遍历数据表的情形,一提到遍历表,我们第一印象可能就想到使用游标,使用游标虽然直观易 ...

  9. 2019王小的Java学习之路

    文章背景身边有个非常要好的朋友王某某,因为是发小的关系,之后文章统称为王小. 大专毕业后 顺利 的被安排进了某某工厂工作,工作一段时间后,尽管工作比较轻松,却无法忍受终日的流水线生活,经过我的介绍,决 ...

  10. npm run dev/build/serve

    1.ERR引发的思考 npm run dev npm ERR! missing script: dev npm ERR! A complete log of this run can be found ...