旧的IE JavaScript不支持indexOf

时间:2011-07-26 11:08:48

标签: javascript internet-explorer browser cross-browser

从输入文件类型我将fullPath(整个本地路径名)传递给javascript,并且我已经编写了javascript来了解文件扩展名类型,

 while (fullPath.indexOf("\\") != -1)
            fullPath = fullPath.slice(file.indexOf("\\") + 1);
        alert(fullPath);

我只在IE上面有问题,确切地说我发现IE不支持indexOf,我怎么能改变我的这个。如果不是这种情况,那么有任何替代方法可以知道可以在所有浏览器中使用的文件扩展名。

感谢,
michaeld

2 个答案:

答案 0 :(得分:6)

您可以创建它(Javascript Code to create method

易于使用:

if(!Array.indexOf){
   Array.prototype.indexOf = function(obj){
       for(var i=0; i<this.length; i++){
          if(this[i]==obj){ 
             return i; 
          }
       } 
       return -1; 
     }
 }

答案 1 :(得分:2)

假设您尝试在字符串上使用它,那么IE中支持

indexOf() ,至少早在3.0版本。我相信在IE9中最终添加了对数组indexOf()的支持。

您在问题中包含的示例是对名为indexOf()fullPath的变量使用file,我认为这些变量是字符串,但为什么要混合使用fullpath内的索引,其切片操作使用file中的索引:

while (fullPath.indexOf("\\") != -1)
  fullPath = fullPath.slice(file.indexOf("\\") + 1);
// what is the file variable ^^

要计算出你想要的最后一个“。”之后的所有字符的文件类型,请尝试使用lastIndexOf()函数:

var fileType = fullPath.slice(fullPath.lastIndexOf(".") + 1);

(在字符串中没有“。”时添加你自己的其他情况。)

顺便说一句,我不认为文件系统使用“\”字符来分隔文件夹名称:非Windows系统呢?