Старый 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?