以下功能在 Opera、Firefox 和 Chrome 上运行良好。但是,在 IE8 中它失败了if ( allowed.indexOf(ext[1]) == -1)。
if ( allowed.indexOf(ext[1]) == -1)
有谁知道为什么?有什么明显的错误吗?
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) { document.getElementById('uploadsec').innerHTML = document.getElementById('uploadsec').innerHTML; alert('This file type is not allowed!'); } }
IE9 之前的 IE 版本没有.indexOf()Array 的功能,要定义确切的规范版本,请在尝试使用之前运行它:
.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的版本,用于 Firefox/SpiderMonkey。在其他情况下,例如 IE,它会.indexOf()在它丢失的情况下添加......此时基本上是 IE8 或以下。