IE8 中数组对象的 indexOf 函数异常
提供的 JavaScript 函数(旨在验证文件扩展名)在 IE8 期间遇到了一个问题if ( allowed.indexOf(ext[1]) == -1) 语句的执行。此失败提示了为什么indexOf函数在IE8中无法正确执行的问题。
indexOf函数是JavaScript数组中的本机方法,返回数组中指定元素第一次出现的索引。但是,在 IE9 之前的 Internet Explorer 版本中,没有为数组定义此函数。因此,尝试在 IE8 中的数组上使用 indexOf 会触发错误。
解决方案
要解决此差异,可以在使用 indexOf 之前使用 polyfill功能。 Polyfill 是一个代码片段,可实现与旧浏览器版本的兼容性。在这种情况下,Array.prototype.indexOf的polyfill可以实现如下:
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; }; }
实现这个polyfill可以确保indexOf函数在旧版IE中可用,从而允许JavaScript函数按预期运行.
以上是为什么在 IE8 中,indexOf 不能正确处理数组?的详细内容。更多信息请关注PHP中文网其他相关文章!