首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Internet Explorer浏览器的JavaScript中修复数组indexOf()

如何在Internet Explorer浏览器的JavaScript中修复数组indexOf()
EN

Stack Overflow用户
提问于 2009-11-17 03:27:29
回答 9查看 177.6K关注 0票数 298

如果您曾经使用过JavaScript,您就会知道Internet Explorer没有为Array.prototype.indexOf()实现ECMAScript函数,包括Internet Explorer 8。这不是一个大问题,因为您可以使用以下代码扩展页面上的功能。

代码语言:javascript
复制
Array.prototype.indexOf = function(obj, start) {
     for (var i = (start || 0), j = this.length; i < j; i++) {
         if (this[i] === obj) { return i; }
     }
     return -1;
}

我应该什么时候实现这个?

我是否应该用下面的检查将它包装在我所有的页面上,该检查检查原型函数是否存在,如果不存在,继续扩展Array原型?

代码语言:javascript
复制
if (!Array.prototype.indexOf) {

    // Implement function here

}

或者做浏览器检查,如果它是Internet和Explorer,那么就实现它?

代码语言:javascript
复制
//Pseudo-code

if (browser == IE Style Browser) {

     // Implement function here

}
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-11-17 03:30:23

这样做..。

代码语言:javascript
复制
if (!Array.prototype.indexOf) {

}

作为recommended compatibility by MDC

一般来说,浏览器检测代码是一个很大的禁忌。

票数 214
EN

Stack Overflow用户

发布于 2011-04-14 08:07:23

或者,您可以使用jQuery 1.2 inArray function,它应该可以跨浏览器工作:

代码语言:javascript
复制
jQuery.inArray( value, array [, fromIndex ] )
票数 142
EN

Stack Overflow用户

发布于 2012-05-03 22:17:23

underscore.js库有一个indexOf函数,您可以使用它来代替:

代码语言:javascript
复制
_.indexOf([1, 2, 3], 2)
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1744310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档