2011-01-10 22 views
5

Hice esta prueba de Javascript: http://utbm.trunat.fr/CIP/quiz/¿Por qué mi JQuery no se carga en IE?

Funciona en el navegador normal, pero ni siquiera carga con Internet Explorer.

Se ve que no reconoce la función initQuiz().

¿Tiene alguna idea de cómo puedo solucionar esto?

+0

Mensaje: llamada inesperada al método o acceso a la propiedad. Línea: 113 Char : 460 Código: 0 URI: http://utbm.trunat.fr/CIP/quiz/js/jquery-1.4.4.min.js Mensaje: El objeto no acepta esta propiedad o método Línea: 110 Char: 6 Código: 0 URI: http://utbm.trunat.fr/CIP/quiz/js/start-quiz.js – simon

+1

Me encanta cómo hay dos categorías de navegadores : navegadores normales e IE. –

Respuesta

10
  • Internet Explorer no acepta la coma final:

    question = {'texte': $(this).attr("texte"), 
        'sound': $(this).attr("sound"),} 
    
  • Al parecer, otro error proviene de esta línea:

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

    Resulta que you can't set the title like that in IE. Use document.title = QUIZ_TITLE[lang] en su lugar.

  • Un tercer error es que está introduciendo una nueva variable, question sin la palabra clave var, que es un error en IE. Lo estás haciendo de nuevo, más tarde, en response. Modificar una loadXML como tal:

    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); 
    } 
    
  • Un cuarto error es en la forma en que está verificando que una respuesta es correcta.

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

    se compara el valor del atributo data-type para el valor de cadena "true", pero cuando se asigna el valor, lo establece en el valor booleano true:

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

    Para asegurarse de que siempre está comparando valores de cadena, por ejemplo, puede establecer el valor como tal:

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

Ok gracias por esto, hay otro error, supongo? – Natim

+0

¿Es posiblemente el '$ (this) .attr ('sound')' cuando el sonido no está definido que genera un error? – Natim

+0

Ese error fue en 'loadXML (xml)'. Impidió la ejecución de 'loadXML', y posiblemente otras funciones. Hasta que se haya corregido, es difícil saber si hay otros errores o no. –

Cuestiones relacionadas