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/3629183/

相关文章:

internet-explorer - Tomcat 中的缓存控制

html - 在选择选项菜单上悬停时失去焦点

javascript - jQuery IE8 不工作但是 IE7、IE6 和其他工作

html - IE 忽略 !important CSS 中的标签

javascript - Firebase 身份验证错误 : auth/invalid-credential

php - 我的网站在整个文件中注入(inject)了 javascript

php - 如果在移动设备上查看网站,则更改样式

javascript - 如果 AJAX 成功/失败后,jquery 无法在内部工作

css "::after"类在 Internet Explorer 中不起作用

html - CSS 对齐 :vertical; not working properly in Firefox