Персональный сайт Александра Литовченко

номер32
Поиграть в преферанс в онлайне
15 мая 2008 16:05

А где собственно Array.indexOf в IE6?

Многие веб-разработчики используют Mozilla Firefox в процессе создания своих веб-приложений. И зачастую бывают сильно удивлены, когда их javascript код, написаный строго по ECMA спецификациям не проходит тесты в Internet Explorer. Одной из причин, является отсутствие поддержки в некоторых версиях IE функции Array.indexOf

Проверяется отсутствие данной функции в своем IE просто.

if (!Array.indexOf) 
    alert('No'); 
else 
    alert('Yes');

Исправить данную ситуацию не меняя свой исходный код, можно следующим образом. Вставляем в начало ie-специфичный хак:

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 27 июля 2010 18:42, moscowman

Тут есть одно но! После внедрения прототипного метода, проходка по массиву следующим методом:

for(var index in array)
{
...
//первым попаданием выдаст
// array[index] = function(obj)
// for(var i=0; i // if(this[i]==obj){
// return i;
// }
// }
// return -1;
// }
}

2 13 декабря 2010 00:24, Shock

moscowman, проходка по массиву через for (var index in array) не должна осуществлятся никогда.

3 11 марта 2011 12:06, nick

>проходка по массиву через for (var index in array) не должна осуществлятся никогда

почему так?

Добавить комментарий

только текст. HTML теги вырезаются:

Пожалуйста будьте вежливы при общении