的JavaScript的indexOf VS Array.prototype.indexOf IE兼

2019-10-17 00:16发布

可能重复:
为什么不是一个数组IE8上的indexOf工作?

我最近开发了使用本地JavaScript和jQuery的脚本。 我大部分的发展已与IE 9,Chrome浏览器,Firefox浏览器。 对于所有这些线下完美的作品:

if(data.cols.indexOf("footprint") < 0)

不过今天我推了一下我的代码到生产系统和一对夫妇的客户已经回来说自己的网页被打破。 我已经缩小我的搜索到indexOf ,这显然IE 8丝毫不喜欢。 所以,我试图找到一种替代,我发现这个有点Array.prototype.indexOf ,但我真的不知道我怎么会扎那成的if-else类似于上面。

此外,如果有更好的选择,然后我所有的耳朵。 而且,这事我可能要适用于IE 8个浏览器只,其中,如果IE 8中发现,用这个,如果没有采用原有的?

Answer 1:

这个问题已经提出了很多次,另一个线程#1可以在这里找到: 如何修复阵列的indexOf()JavaScript中的Internet Explorer浏览器

几个人在不同的线程都使用推荐的来自MDC这个代码 。 这似乎是代码:

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

只需拨打任何电话的indexOf之前运行该代码()



文章来源: JavaScript indexOf vs Array.prototype.indexOf IE compatibility error [duplicate]