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