在提供的代码中,indexOf() 方法用于 CheckMe() 函数中的数组。虽然此函数在 Opera、Firefox 和 Chrome 中完美运行,但在 IE8 中的 if ( allowed.indexOf(ext[1]) == -1) 行中遇到错误。出现此问题的原因是 IE8 本身不支持数组的 indexOf() 函数。
要解决此问题,您可以合并一个 Polyfill,将 indexOf() 方法添加到 Array 对象。下面是一个示例:
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() 的此实现基于 MDN 的版本,并且与 Firefox 和 SpiderMonkey 兼容。它将把 indexOf() 方法添加到 IE8 或任何其他本身不支持它的浏览器中的 Array 对象。
通过合并此填充,您可以确保您的代码即使在旧版浏览器中也能按预期运行像IE8一样缺少indexOf()方法。
以上是为什么我的 JavaScript `indexOf()` 方法在 IE8 中失败,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!