Javascript не работает в IE7 и IE8 - PullRequest
0 голосов
/ 17 ноября 2011

В настоящее время я создаю веб-сайт и у меня есть некоторый JavaScript, который работает во всех браузерах, кроме IE7 и IE8. Я провел несколько тестов в коде, вставив несколько операторов «alert» и пришел к выводу, что javascript нарушает один конкретный оператор «if». Это также не код внутри оператора if, потому что я тоже это проверял.

Я не вижу ничего плохого в самом операторе if, но, пожалуйста, дайте мне знать, если есть проблема с IE7 / IE8 и кодом, который я произвел. Код можно увидеть ниже.

Заранее спасибо за любую помощь.

var Items = new Array("a","b","c","d");
var queryString = window.location.search.substring(1);

if(Items.indexOf(queryString) != "-1"){
    //code goes here
}

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

В прототипе IE Array IE нет функции indexOf (). Если бы он был, он бы возвращал числовое значение, а не строку.

Полифилл "indexOf ()" можно найти на странице документации MDN для функции.

Также, когда вы объявляете и инициализируете массивы, используйте константу массива:

var Items = ["a", "b", "c", "d"];
0 голосов
/ 17 ноября 2011

Вот один из способов расширения объекта Array для поддержки indexOf в тех браузерах, которые его не поддерживают. У этого есть свои проблемы, если вы когда-нибудь итерируете массив через for (x в a) (не рекомендуется) и не проверяете hasOwnProperty, это вызовет проблемы.

if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...