首页 >web前端 >js教程 >为什么在 IE8 中,indexOf 不能正确处理数组?

为什么在 IE8 中,indexOf 不能正确处理数组?

Susan Sarandon
Susan Sarandon原创
2024-12-07 11:05:14440浏览

Why Doesn't indexOf Work Correctly with Arrays in IE8?

IE8 中数组对象的 indexOf 函数异常

提供的 JavaScript 函数(旨在验证文件扩展名)在 IE8 期间遇到了一个问题if ( allowed.indexOf(ext[1]) == -1) 语句的执行。此失败提示了为什么indexOf函数在IE8中无法正确执行的问题。

indexOf函数是JavaScript数组中的本机方法,返回数组中指定元素第一次出现的索引。但是,在 IE9 之前的 Internet Explorer 版本中,没有为数组定义此函数。因此,尝试在 IE8 中的数组上使用 indexOf 会触发错误。

解决方案

要解决此差异,可以在使用 indexOf 之前使用 polyfill功能。 Polyfill 是一个代码片段,可实现与旧浏览器版本的兼容性。在这种情况下,Array.prototype.indexOf的polyfill可以实现如下:

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

实现这个polyfill可以确保indexOf函数在旧版IE中可用,从而允许JavaScript函数按预期运行.

以上是为什么在 IE8 中,indexOf 不能正确处理数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn