`

javascript中ie8/ie9不支持Array.indexOf解决办法

阅读更多

场景:
js中判断一个string是否在一个js的数组中。
方法:

 代码如下 复制代码

if (['a', 'b', 'c'].indexOf(str) >= 0) {
    //do something
}

判断选择的文件的扩展名是否在指定的数组中:

 代码如下 复制代码

var position = selectedFilePath.lastIndexOf(".");
        if(position<=0){
         alert("不允许上传这种扩展名的文件!");
         return;
        } else{
         var ext = selectedFilePath.substr(position);
         ext = ext.toLowerCase();
         var extArr = [".jpg",".png",".gif", ".jpeg"];
         if(extArr.indexOf(ext) == -1){
          alert("不允许上传这种扩展名的文件!");
          return;
         }
        }

问题:ie9以下的版本不支持 [].indexOf()
解决方案

针对ie8及以下版本,自己创建indexOf函数。
ie8.js :

 代码如下 复制代码

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;
  };
}

然后在相关页面中引入ie8.js

 代码如下 复制代码

<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
  <script src="./assets/js/ie8.js"></script>
    <![endif]-->

分享到:
评论

相关推荐

    javascript权威指南(第六版)

    13.3 Execution of JavaScript Programs 317 13.4 Compatibility and Interoperability 325 13.5 Accessibility 332 13.6 Security 332 13.7 Client-Side Frameworks 338 14. The Window Object . . . . . . . . . ....

    Glype完全汉化&&移动版自动跳转适配.zip

    i++){ if (browser.indexOf(mobileAgent[i])!=-1){ isMobile = true; //alert(mobileAgent[i]); location.href = '手机网址'; break; } } &lt;/script&gt; 修改手机网址为自己的站点手机站目录,如...

    javascript函数的解释

    37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到. 38.取字符串中指定位置的一个字符:StringA.charAt(9); 39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6); 40....

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    4.名字中不能包含空格。 在XML文档中任何的差错,都会得到同一个结果:网页不能被显示。各浏览器开发商已经达成协议,对XML实行严格而挑剔的解析,任何细小的错误都会被报告。你可以将上面的myfile.xml修改一下,...

    js使用小技巧

    &lt;input type=text onkeypress="return event.keyCode&gt;=48&&event.keyCode||(this.value.indexOf(".")&lt;0?event.keyCode==46:false)" onpaste="return !clipboardData.getData("text").match(/D/)" ondragenter=...

    107个常用javascript语句

    37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到. 38.取字符串中指定位置的一个字符:StringA.charAt(9); 39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6); 40....

    Sortable前端框架

    Sortable is a &lt;s&gt;minimalist&lt;/s&gt; JavaScript library for reorderable drag-and-drop lists. Demo: http://rubaxa.github.io/Sortable/ ## Features * Supports touch devices and [modern]...

    javascript检查某个元素在数组中的索引值

    在现在代浏览器中判断一个元素在不在一个数组中,咱们可以用Array对象的indexOf()方法来取得这个元素在当前数组中的索引值,若索引值不等于-1,数组中就存在这个元素, 例如: var arr = [2,53,23,'test',9,'array'...

    am.js:一个用于使用属性及其值而不是类来设置 HTML 元素样式的 javascript 库。 基于 AMCSS 属性模块的 CSS - 规范

    在不支持 Array.IsArray 和 Array.indexOf 的旧浏览器上,在之前包含 es5-shim github.com/es-shims/es5-shim 一些问题: 仅适用于支持属性和 ~= 选择器的浏览器(无 IE6 及以下) 模块名称仅在 IE 上区分大小写...

    JavaScript从数组的indexOf()深入之Object的Property机制

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法。数组是继承自Object的原型,并且他对typeof没有...比如IE8以下的浏览器不支持Array的indexOf方法,为了让数组支持indexOf,我

    shim.js:为 Internet Explorer 8 和 9 中的 DOM 添加常用功能

    垫片.js 这是一个小的 javascript 文件,用于使 Internet Explorer 8 和 9 快速使用我常用的一些功能。 它并不打算成为这些功能的完整实现(或什至严格准确),只是足以在 99% 的情况下通过。... Array.indexOf Da

    discuz中用到的javascript函数解析 原创第1/2页

    var is_moz = (navigator.product == ‘Gecko’) && userAgent.substr(userAgent.indexOf(‘firefox’) + 8, 3); var is_ie = (userAgent.indexOf(‘msie’) != -1 && !is_ope

    javascript框架设计读书笔记之数组的扩展与修复

    因为IE7在数组对象上使用indexOf会报错,所以需要重写一个兼容性的。 代码如下: Array.prototype.lastIndexOf(item,index){  var n = this.length,i = (index==null||index&gt;n-1)?n-1:index;  if(i ...

    Backbone.Validator:Backbone 的验证框架,允许您设置合理的默认值

    主干验证器版本1.1.5 - 添加了emptyOk以允许通常需要更复杂检查(即正则... 0.4.3 - IE 不支持Array.prototype.indexOf ,切换到_.indexOf() 0.4.1 - 如果默认值与验证规则不匹配,则现在验证和拒绝默认值。 这应该

    JavaScript实现删除数组重复元素的5种常用高效算法总结

    注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下: // 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //...

    JavaScript数组去重由慢到快由繁到简(优化篇)

    indexOf去重 Array.prototype.unique1 = function() { var arr = []; for (var i = 0; i &lt; this.length; i++) { var item = this[i]; if (arr.indexOf(item) === -1) { arr.push(item); } } return arr; } [1,2...

    asp.net知识库

    忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,...

Global site tag (gtag.js) - Google Analytics