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]-->

时间: 2024-10-26 02:39:06

javascript中ie8/ie9不支持Array.indexOf解决办法的相关文章

javascript中动态加载js文件多种解决办法

一个比较全部在动态加方法  代码如下 复制代码 /*     动态加载js v1.0 by:dum 2012-03-17 www.111cn.net     用法:src="webJsBase.js?load=a,b"     注:加载本目录下js */ var webJsBase = {     require: function(libraryName) {         document.write('<script type="text/javascript&

JQuery.validate在ie8下不支持的快速解决方法_jquery

一.在ie8下回有问题的代码 1.JQuery.validate验证框架是通过页面form表单提交验证<input/>标签中输入是否符合自己的规则的 <form id="cardTypeFrm"> <table width="100%" cellspacing="0" cellpadding="0" class="table_pzh"> <tbody> <

iOS9与XCode7中不能使用http连接的快速解决办法_IOS

在Xcode7.0及以上版本中编译iOS APP时,默认会使用iOS9的一项新特性,使得所有http连接被禁用,项目里使用的API没有https支持,就悲剧了.差了官方文档,有这么一段话 App Transport Security App Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. ATS prevents accident

本地php环境不支持curl_exec的解决办法

在测试安装某源码时,安装程序检测到本地php环境不支持curl_exec         我果断进行了一阵搜索后,东拼西凑找到了一些php环境不支持curl_exec的解决办法,通过自己实际操作解决了这个问题.以下是自己操作后总结的方法: 1.在C盘的windows目录下找到PHP.INI配置文件,使用PHP编辑器打开,找到extension_dir = "../",改为自己php安装目录下ext目录的绝对路径,如:extension_dir = "C:/AppServ/ph

Winxp中无法安装新字体的终极解决办法

Winxp中无法安装新字体的终极解决办法 在windows 7越来越火的今天,相信还有很多朋友对XP系统情有独钟吧?北极鱼也算是一个了,主要是由于自己都很少使用安装版软件,电脑上基本上都是一些绿色软件.并且自己制作很多绿色软件都是在xp系统下测试绿化的,结果就导致部分绿色软件在windows 7下无法使用,再加上在运行速度已经习惯问题上感觉还是XP来的顺手,所以一直还在延续着XP的使用,(双系统,平时使用在XP下,玩玩就用windows 7), 一直来用的XP好好的,不过早些天,北极鱼也算是终于

getview()-android getView中 position=0多次出现的解决办法

问题描述 android getView中 position=0多次出现的解决办法 适配器中的getview @Override public View getView(int position, View convertView, ViewGroup parent) { View view = View.inflate(context,R.layout.home_item,null); TextView tv = (TextView) view.findViewById(R.id.homeIt

线程-关于Win32核心编程中DLL注入后无反应的解决办法

问题描述 关于Win32核心编程中DLL注入后无反应的解决办法 #include #include HINSTANCE hProcess; PWSTR pszLibFileRemote; HINSTANCE hThread; void StartInject(int ProcessID, char * DllName); void OverInject(char * DllName); void EnableDebugPrivilege(HANDLE processHandle); int ma

有关easyui-layout中的收缩层无法显示标题的解决办法_jquery

easyui-layout中的收缩层无法显示标题的问题原因分析: 在easyui-layout中设置面板初始化为可以折叠,然后就发现标题还有图标都木有了 嗯,就是结果列表上面.一片空白,出现了问题就要去解决它,在网上查了资料之后呢,决定修改jquery.easyui.min.js 版本为:jQuery EasyUI 1.4.1 在5105行有_39d方法,在其中设置两个变量_Cstitle,_CsIcon添加代码如下: var _Cstitle; var _closedTitle = p.pan

php中curl不支持https的解决办法

在php程序中使用curl去访问https站点时,报错:Protocol https not supported or disabled in libcurl  该错误信息表示php当时编译时使用的curl库不支持https, 验证方法为你的curl安装目录/bin/curl  -V  显示如下:Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp这表示curl是不支持 https的 为了支持https,需要下载