javascript - 为什么indexOf 不能在IE8 上工作?

标签 javascript internet-explorer internet-explorer-8 indexof

以下函数在 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 ,在尝试使用它之前运行它:

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

这是版本from MDN ,用于 Firefox/SpiderMonkey。在其他情况下,例如 IE,它将添加 .indexOf()如果它丢失了......此时基本上是 IE8 或更低版本。

关于javascript - 为什么indexOf 不能在IE8 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320760/

相关文章:

javascript - 如何在 HOC 组件中正确使用泛型类型?

javascript - Internet Explorer 8、9、10 javascript 无法正确加载

css - 非 IE 时使用样式表

css - IE8 中的链式伪选择器

javascript - 阻止 <enter> 在 IE8 中的文件输入上提交表单

javascript - JS : for loop with pauses

javascript - webkit 中的 Jquery css 值

javascript - 寻找一个非常简单的 UpdateListItems for SPservices with Sharepoint 2007 示例

internet-explorer - 有没有办法在 Blue Prism 中应用 "activate"html?

Javascript window.open 在 Win7 x64 上的 32 位 IE8 中返回 null