【问题标题】:Old IE JavaScript doesn't support indexOf旧版 IE JavaScript 不支持 indexOf
【发布时间】:2012-01-11 10:44:51
【问题描述】:

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

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

我在 IE 中仅在上述部分有问题,我发现 IE 不支持 indexOf,我该如何更改我的 this。如果不是这种情况,是否有任何替代方法可以知道可以在所有浏览器中使用的文件扩展名。

谢谢,
迈克尔

【问题讨论】:

  • 对于这个问题的全面解释以及解决方法不仅适用于 indexOf,还适用于 IE 中其他缺失的数组函数,请查看 StackOverflow 问题stackoverflow.com/questions/2790001/…

标签: javascript internet-explorer browser cross-browser


【解决方案1】:

你可以创建它 (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; 
     }
 }

【讨论】:

  • 嗨,史蒂夫看了,但不清楚如何添加到代码中,但以其他方式在我的代码中解决了它。谢谢!!!
  • 虽然这是一个合适、简单的替代品,但 MDN 有一个更健壮的 polyfill,它符合 ECMA 标准。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
【解决方案2】:

indexOf() 在 IE 中被支持,至少早在 3.0 版,假设您尝试在 strings 上使用它。我相信在 arrays 上对indexOf() 的支持终于在 IE9 中添加了。

您在问题中包含的示例是在名为fullPathfile 的变量上使用indexOf(),我认为它们是字符串,但是为什么要将fullpath 中的索引上的while 条件与使用file 中的索引的切片操作:

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

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

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

(当字符串中没有“.”时添加您自己的 else 情况。)

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

【讨论】:

    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2012-06-11
    • 2019-11-19
    • 2011-12-09
    • 2013-10-29
    相关资源
    最近更新 更多