一尘不染

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

javascript

如果您曾经使用JavaScript进行任何长度的工作,您都会知道Internet
Explorer不会为Array.prototype.indexOf()[包括Internet Explorer
8]实现ECMAScript函数。这不是一个大问题,因为您可以使用以下代码扩展页面上的功能。

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原型?

if (!Array.prototype.indexOf) {

    // Implement function here

}

还是要检查浏览器,如果它是Internet Explorer,则只需实施它?

//Pseudo-code

if (browser == IE Style Browser) {

     // Implement function here

}

阅读 301

收藏
2020-04-25

共1个答案

一尘不染

像这样做…

if (!Array.prototype.indexOf) {

}

如MDC建议的兼容性。

通常,浏览器检测代码是很大的禁忌。

2020-04-25