今天帮助女票解决了一个js兼容ie8的问题,记录一下。
有时候我们发现在Chrome或者高版本的IE下运行得好好的代码,到ie8下却出错了,这很尴尬,特别是js。js一旦出错,那么下面的代码就统统不会运行了。
就如我们这次遇到的情况,我们使用了DateTimePicker日期控件,其中用到了Indexof()这个函数,然而ie并不支持,所以导致了后面用js生成的表格都无法显示出来。
先谷歌了一下,发现可以手动重写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;};
}

只要将以上的代码放在使用indexof()函数之前,就可以在ie8中使用indexof()函数了。

然而有报了一个trim()函数的兼容性错误,ie8同样不支持这个函数,囧。
好吧,如法炮制

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

然后把这两个函数写成js文件,判断是ie8则引入。但是想想,难道有一个不兼容,我就要重写一个函数。有没有别人已经写好的。
Google一下,果然!
找到一个开源项目:isbetter.js
具体的自己看吧:GitHUb地址

##需要注意

  • 1.这个项目目前也有一些BUG,所以如果你发现了BUG自己再完善一下。不要觉得别人的项目有点错误就抛弃不用,毕竟bug是该不完的。
  • 2.由于使用的Jquery版本不同,也会引发不同的兼容性问题。需要自己写缺失属性的代码,或者引起错误的isBetter.js的地方添加try-catch
  • 3.注意把isBetter.js放在Jquery.js之前。否则或抛出Jquery的兼容性错误。
  • 4.不要使用注释引入代码,因为这一招对ie10+已经无效了
 <!--[if lte IE 8]><script src="ieBetter.js"></script><![endif]-->

使用以下代码引入isBetter.js

<script>
if (!document.addEventListener) {// IE6~IE8document.write('<script src="ieBetter.js"><\/script>');
}
</script>

Javascript兼容IE8相关推荐

  1. javascript 解决IE8 兼容 placeholder 属性 含password

    javascript 解决IE8 兼容 placeholder 属性 含password function placeholderfun(){if( !('placeholder' in docume ...

  2. 关于让bootstrap3兼容ie8

    官网上有说Internet Explorer 8 和 9 是被支持的,然而,你要知道,很多 CSS3 属性和 HTML5 元素 -- 例如,圆角矩形和投影 -- 是肯定不被支持的.另外, Intern ...

  3. js层级轮播图兼容IE8及以上浏览器

    预览 本轮播图兼容ie8+浏览器,精华部分js+css,什么定时轮播,什么旋转,全部实现! html代码 <div class="box"><div class= ...

  4. bootstrap3 兼容IE8浏览器

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

  5. 使用d3画横向组织架构图,兼容ie8(一)

    在新单位上班半个月了,干的活都是小儿科的活,今天部门经理给了个图,让我写个组件来实现,图是一个横向的组织架构图. 好久之前就想写个组件来实现的,但由于一直感觉价值不大就没有动手. 网上搜索了下 说是用 ...

  6. React 兼容IE8 项目

    过去的一年里公司项目需要兼容IE8(主要是一些后台管理系统,所以也无需考虑SEO),技术路线选择了React,但是只能使用 react 0.14 版本来实现.经过了几个多页面项目的摸索,对其中涉及的注 ...

  7. 页面水印 原生js 兼容ie8浏览器

    需求缘由 项目是前后端不分离开发的,很老的项目,里面很多插件只能支持ie8,业主公司浏览器都是ie8 ,这次想给所有页面添加用户水印,所以开发需要兼容ie8 水印代码 创建一个js 文件waterma ...

  8. vue兼容IE8以上解决方案

    一.说明背景 vue主要采用了ES6 Promise,我们知道的,在 JavaScript 中,所有代码都是单线程的,也就是同步执行的.而 Promise 就为异步编程提供了一种解决方案. 二.解决方 ...

  9. 【Bootstrap】一个兼容IE8、谷歌等主流浏览器的受众巨幕式风格页面

    虽然说IE6除了部分要求苛刻的需求以外已经被可以不考虑了,但是WIN7自带的浏览器IE8还是需要支持的. 本文这个方法主要的优点,个人觉得就是准备少,不需要上网寻找大量的图片做素材,你只要准备好一个b ...

最新文章

  1. 专转本计算机应用基础,江苏省专转本计算机应用基础模拟题
  2. 读书笔记:《思考的乐趣:Matrix67数学笔记》第4章 统计数据的陷阱
  3. hashmap转红黑树的阈值为8_面试必问的HashMap,一次彻底帮你搞定HashMap源码
  4. word文字中带有数学公式的行间距设置
  5. C++开发者都应该使用的10个C++11特性
  6. 蓝桥杯 ADV-104算法提高 打水问题
  7. [转]JAVA 在main中访问内部类、方法等
  8. IP子网编址和无类域路由CIDR
  9. 机器学习基础算法14-波士顿房价预测-ElasticNet模型
  10. FFmpeg总结(十二)用ffmpeg与nginx实现直播多路流并发播放
  11. 虚拟机与ubuntu(一):VirtureBox虚拟机安装和ubuntu14搭建
  12. python中空间的位置怎么放置_如何在空间中对齐一个位置?
  13. linux svn下载文件到本地
  14. jQuery 插件——免费版
  15. caniuse_使用此工具将CanIUse表嵌入到您的网站中
  16. curl证书过期_centos7内核升级及curl访问https证书过期处理
  17. Hadoop生态圈(十三)- Namenode元数据管理及各组件工作机制
  18. 2022年软件测试行业就业发展前景,软件测试前景好吗?我该学什么?
  19. github android 计算器,Android studio实现简单的计算器
  20. Maple、MATLAB、MathCAD和Mathematica

热门文章

  1. CorelDRAWX4的C++插件开发(四十)纯C++插件开发(4)继承插件结构体IVGAppPlugin和自动化接口IDispatch
  2. html页面转换成图片的三种方法——canvas、dom-to-image、html2canvas
  3. Dubbo的使用和原理
  4. Curator zookeeper异常:Error while calling watcher
  5. matlab 罗德里格斯变换,修正罗德里格斯参数
  6. 如何使用Origin制作XRD图
  7. 前端Vue H5生成带二维码的分享海报,实现长按保存到手机相册
  8. 算法手撕代码26~35
  9. Nvidia官网查询显卡详细参数
  10. 什么是系统架构师,系统架构师应具备哪些能力?