2011-01-10 3 views
5

Я сделал эту викторину javascript: http://utbm.trunat.fr/CIP/quiz/Почему мой JQuery не загружается на IE?

Он работает в обычном браузере, но даже не загружается с помощью Internet Explorer.

Это шов, что он не распознает функцию initQuiz().

У вас есть представление, как я могу это исправить?

+0

Сообщение: Неожиданный вызов метода или доступа к собственности. Line: 113 Char: 460 Код: 0 URI : http://utbm.trunat.fr/CIP/quiz/js/jquery-1.4.4.min.js Сообщение: Объект не поддерживает это свойство или метод Линия: 110 Char: 6 Код: 0 URI: http://utbm.trunat.fr/CIP/quiz/js/start-quiz.js – simon

+1

Мне нравится, как существуют две категории браузеров : обычные браузеры и IE. –

ответ

10
  • Internet Explorer не принимает Запятая:

    question = {'texte': $(this).attr("texte"), 
        'sound': $(this).attr("sound"),} 
    
  • По-видимому, еще одна ошибка приходит от этой линии:

    $('title').html(QUIZ_TITLE[lang]); 
    

    Оказывается you can't set the title like that in IE. Вместо этого используйте document.title = QUIZ_TITLE[lang].

  • Третья ошибка заключается в том, что вы вводите новую переменную question без ключевого слова var, что является ошибкой в ​​IE. Вы делаете это снова, позже, в response. Обновите свою loadXML как таковой:

    function loadXML(xml) { 
        $(xml).find("question").each(function() { 
        var question = {'texte': $(this).attr("texte"), 'sound': $(this).attr("sound")}; 
    
         reponses = []; 
         $(this).find('carre').find('reponse').each(function() { 
         var reponse = {'texte': $(this).text(), 'sound': $(this).attr("sound"), 'bonne': false}; 
         if($(this).attr('bonne') == "vrai") reponse['bonne'] = true;    
         reponses.push(reponse); 
        }); 
    
        question['reponses'] = reponses; 
        questions.push(question); 
        }); 
        startGame(questions); 
    } 
    
  • Четвертая ошибка в том, как вы проверочной, что ответ является правильным.

    if($(this).attr('data-type') == 'true') 
    

    Вы сравниваете значение атрибута к значению строки "true"data-type, но когда вы присвоить значение, вы установите его в логическое значение true:

    $('#r'+(i+1)+'input').attr('data-type', r.bonne); 
    

    Чтобы убедиться, что вы всегда сравниваете строковые значения, например, вы можете установить значение как таковое:

    $('#r'+(i+1)+'input').attr('data-type', r.bonne.toString()); 
    
+0

Хорошо спасибо за это, есть еще одна ошибка, я думаю? – Natim

+0

Возможно ли это '$ (this) .attr ('sound')', когда звук не определен, что вызывает ошибку? – Natim

+0

Эта ошибка была в 'loadXML (xml)'. Это предотвратило выполнение 'loadXML' и, возможно, других функций. До тех пор, пока он не будет исправлен, трудно определить, имеются ли другие ошибки. –

Смежные вопросы