Array.indexOf() 函数在 IE8 中失败
indexOf() 函数,用于检查数组中元素的索引,在 9 之前的 Internet Explorer (IE) 版本中提出了挑战。具体来说,在 IE8 中,此函数无法按预期工作,让开发人员陷入困境。
要追踪根本原因,请考虑以下函数,其中在 Opera、Firefox 和 Chrome 等浏览器中有效:
function CheckMe() { var allowed = new Array('docx','xls','xlsx', 'mp3', 'mp4', '3gp', 'sis', 'sisx', 'mp3', 'wav', 'mid', 'amr', 'jpg', 'gif', 'png', 'jpeg', 'txt', 'pdf', 'doc', 'rtf', 'thm', 'rar', 'zip', 'htm', 'html', 'css', 'swf', 'jar', 'nth', 'aac', 'cab', 'wgz'); var fileinput=document.getElementById('f'); var ext = fileinput.value.toLowerCase().split('.'); if (allowed.indexOf(ext[1]) == -1) {...
函数尝试执行 if (allowed.indexOf(ext[1]) == -1) 条件语句时会发生错误。在 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; }; }
此修复添加了 indexOf () 方法到数组原型(如果它不存在),特别是针对 IE8 或更低版本。通过合并此修复,CheckMe() 函数将按预期执行,解决 IE8 中的问题。
以上是为什么 Array.indexOf() 在 IE8 中失败,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!