我最近开发了一个使用原生Javascript和jQuery的脚本。我的大部分开发都是使用IE 9,Chrome,Firefox。对于所有这些,下面的行完美地运作:
if(data.cols.indexOf("footprint") < 0)
然而今天我将一些代码推送到生产系统,并且有几个客户回来说他们的页面坏了。我已将搜索范围缩小到indexOf
,显然IE 8并不是最不喜欢的。所以我试图找到一个替代方案,我找到了这个位Array.prototype.indexOf
,但我不确定如何将其绑定到if-else类似于上面。
如果有更好的选择,那么我全都是耳朵。另外,这是我可能只需要应用于IE 8浏览器的东西,如果找到IE 8,使用它,如果不使用原来的?
答案 0 :(得分:1)
这个问题多次出现,可以在这里找到另一个Stackoverflow线程:How to fix Array indexOf() in JavaScript for Internet Explorer browsers
不同主题上有几个人建议使用this code from 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()
之前,只需运行此代码