以下功能在Opera、Firefox和Chrome上运行良好.然而,在IE8中,它在if ( allowed.indexOf(ext[1]) == -1)部分失败.

有人知道为什么吗?有什么明显的错误吗?

function CheckMe() {
    var allowed = new Array('docx','xls','xlsx', 'mp3', 'mp4', '3gp', 'sis', 'sisx', 'mp3', 'wav', 'mid', 'amr', 'jpg', 'gif', 'png', 'jpeg', 'txt', 'pdf', 'doc', 'rtf', 'thm', 'rar', 'zip', 'htm', 'html', 'css', 'swf', 'jar', 'nth', 'aac', 'cab', 'wgz');
    var fileinput=document.getElementById('f');
    var ext = fileinput.value.toLowerCase().split('.');
    if ( allowed.indexOf(ext[1]) == -1) 
    {
        document.getElementById('uploadsec').innerHTML = document.getElementById('uploadsec').innerHTML;
        alert('This file type is not allowed!');
    }
}

推荐答案

IE9之前的IE版本没有数组的.indexOf()函数,要定义the exact spec version,请在try 使用它之前运行以下命令:

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

这是Firefox/SpiderMonkey中使用的版本from MDN.在其他情况下,比如IE,它会在丢失的情况下添加.indexOf()...目前基本上是IE8或更低.

Javascript相关问答推荐

在shiny 模块中实现JavaScript

Fastify错误:CORS策略已阻止从起源api-dev.example.com上的MLhttp请求

通过实现regex逻辑自定义数据表搜索

如何最好地从TypScript中的enum获取值

如何使用侧边滚动按钮具体滚动每4个格?

Snowflake JavaScript存储过程返回成功,尽管预期失败

为什么这个JS模块在TypeScript中使用默认属性导入?""

WebRTC关闭navigator. getUserMedia正确

为什么当我解析一个promise时,输出处于挂起状态?

将现场录音发送到后端

从包含数百行的表中获取更改后的值(以表单形式发送到后端)的正确方法是什么?

当我在Reaction中创建一个输入列表时,我的输入行为异常

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

在SHINY R中的嵌套模块中,不能使用Java代码

在Odoo中如何以编程方式在POS中添加产品

如何为仅有数据可用的点显示X轴标签?

当我点击一个按钮后按回车键时,如何阻止它再次被点击

在SuperBase JS客户端中寻址JSON数据

我无法在Api Reaction本机上发出GET请求

我如何才能获得价值观察家&对象&S的价值?