1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Отсутствие метода indexOf в Internet Explorer. Решение проблемы

При написании скриптов на JavaScript, самой распространённой проблемой является кроссбраузерность кода. Если вы пишите скрипт и тестируете его лишь на одном браузере, с вероятностью семьдесят процентов, он не будет работать на другом.

Согласитесь, в жаркое лето глупо лишать себя кондиционера, ведь экономия получится не такая уж большая, а комфорт вы получите просто царский.

Причиной является разность в классовой структуре браузеров, и некоторые методы или свойства могут выглядеть иначе. В основном эта проблема решается просто – нужно лишь найти подходящий аналог метода или свойства для тех браузеров под которые рассчитано ваше приложение. Однако бывают случаи когда аналога не существует. С одной такой проблемой я столкнулся недавно при написании скрипта под Internet Explorer. Оказалось что в классе Array просто нет метода indexOf, определяющего номер вхождения символа в массив. Можно конечно написать функцию наподобие этой -

function indexOf(mass,let){
for(i=o;i<mass.length;i++){
if(mass[i]==let)return i;
}
return -1;
}

Однако есть более изящный способ решения данной проблемы. Дело в том что в классовой структуре IE предусмотрено написание собственных прототипов класса, и благодаря этому, написав такой прототип, можно пользоваться функцией в привычном виде -

Array.prototype.indexOf = function(let){
for(i=o;i<this.length;i++){
if(this[i]==let)return i;
}
return -1;
}

Спасибо за ретвит этой записи, если вам понравился материал, подпишитесь на обновления блога по RSS или по почте:

Читать в Яндекс.Ленте Добавить в Google Reader
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Рекомендую прочесть

Подпишись на RSS Следите за обновлениями в Twitter!
ВверхВверх