以下函数在 Opera、Firefox 和 Chrome 上运行良好。但是,在 IE8 中,它在 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()
数组的函数,定义 the exact spec version ,在尝试使用它之前运行它:
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;
};
}
这是版本from MDN ,用于 Firefox/SpiderMonkey。在其他情况下,例如 IE,它将添加 .indexOf()
如果它丢失了......此时基本上是 IE8 或更低版本。
关于javascript - 为什么indexOf 不能在IE8 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320760/