如何修复JavaScript中的Internet Explorer浏览器的Array indexOf()
如果您已经使用过任意长度的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
}
像这样做...
if (!Array.prototype.indexOf) {
}
由MDC建议的兼容性。
一般来说,浏览器检测代码是一个很大的禁忌。
或者,您可以使用jQuery 1.2 inArray函数,它应该可以跨浏览器使用:
jQuery.inArray( value, array [, fromIndex ] )
完整的代码会是这样的:
if (!Array.prototype.indexOf) {
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;
}
}
对于这个以及其他数组函数的真正彻底的答案和代码,请查看Stack Overflow问题修复Internet Explorer中的JavaScript数组函数(indexOf,forEach等)。
链接地址: http://www.djcxy.com/p/18949.html上一篇: How to fix Array indexOf() in JavaScript for Internet Explorer browsers
下一篇: How to restore a whole directory from history of git repository?