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

可能重复:
为什么indexOf不能在IE8arrays上运行?

我最近开发了一个使用原生Javascript和jQuery的脚本。 我的大部分开发都是使用IE 9,Chrome,Firefox。 对于所有这些,下面的行完美地运作:

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

然而今天我把我的一些代码推到了生产系统中,并且有几个客户回来说他们的页面坏了。 我已将搜索范围缩小到indexOf ,显然IE 8并不是最喜欢的。 所以我试图找到一个替代方案,我发现这个位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()