Старый IE JavaScript не поддерживает indexOf

Из типа входного файла я передаю fullPath (полное имя локального пути) в javascript, и я написал javascript, чтобы узнать тип расширения файла,

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

У меня проблема в IE только на вышеприведенной части, точно я обнаружил, что indexOf не поддерживается в IE, как я могу изменить это. Если это не так, есть альтернатива знать расширение файла, которое может работать во всех браузерах.

спасибо,
MichaelD

Ответ 1

Вы можете создать его (Javascript Code для создания метода)

Для удобства использования:

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

Ответ 2

indexOf() поддерживается в IE, по крайней мере, еще в версии 3.0, предполагая, что вы пытаетесь использовать его в строках. Я считаю, что поддержка indexOf() в массивах была наконец добавлена ​​в IE9.

Пример, который вы включаете в свой вопрос, использует indexOf() для переменных с именем fullPath и file, которые я бы предположил, это строки, но почему вы смешиваете условие while по индексу внутри 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);

(Добавьте свой собственный регистр else, если в строке нет..)

В стороне, я бы не предположил, что файловая система использует символ "\" для разделения имен папок: что же касается систем, отличных от Windows?