IE8 数组缺少 indexOf:解决方案
在这个常见的 JavaScript 函数中,在条件 if 中使用 Array.prototype.indexOf ( allowed.indexOf(ext[1]) == -1) 在 IE8 中会导致问题。要了解原因,让我们深入研究 IE8 的独特行为。
IE8 与 Opera、Firefox 和 Chrome 等现代浏览器不同,缺少数组的 indexOf 方法。这一遗漏源于 IE8 不支持引入了 indexOf 方法的 ECMAScript 5 标准。因此,在 IE8 中尝试对数组使用 indexOf 方法将导致错误。
要解决此问题,我们可以采用以下策略:
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; }; }
这段代码片段源自 MDN,为 indexOf 方法定义了一个 polyfill。它确保 Array.prototype.indexOf 在所有环境中都可用,包括 IE8。通过在数组上使用indexOf之前添加此代码,我们可以确保它在所有浏览器中都能正确运行,包括IE8。
通过实现此解决方案,原始函数将在IE8中无缝运行,允许开发人员检查是否用户选择的文件中允许使用特定的文件扩展名。
以上是如何修复 IE8 中数组的'indexOf”方法问题?的详细内容。更多信息请关注PHP中文网其他相关文章!