JavaScript indexOf与Array.prototype.indexOf IE兼容性错误

可能重复:
为什么indexOf不能在数组IE8上工作?

我最近开发了一个使用本地Javascript和jQuery的脚本。 我的大部分开发工作都是使用IE 9,Chrome,Firefox。 对于他们所有人来说,下面的线条都是完美的:

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

然而今天,我将一些代码推到了一个生产系统上,一些客户回来说他们的页面已经损坏。 我将搜索范围缩小到了indexOf ,显然IE8并不喜欢它。 所以我试图找到一个替代方案,我发现这位Array.prototype.indexOf但我不知道如何将它绑定到if-else类似于上面。

另外如果有更好的选择,那么我都是耳朵。 此外,这是我可能必须适用于IE 8浏览器只,如果发现IE 8,使用此,如果不使用原?


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

不同线程上的几个人建议使用来自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()

链接地址: http://www.djcxy.com/p/18953.html

上一篇: JavaScript indexOf vs Array.prototype.indexOf IE compatibility error

下一篇: .indexOf() not working in IE8