Jquery XML ie8 не работает должным образом - PullRequest
2 голосов
/ 23 ноября 2011

Я использую jquery 1.6.2.Ошибка, отображаемая в моей консоли ie, является неожиданным вызовом доступа к методу или свойству.jquery.min.js, строка 17, символ 29094.

Я тестировал на всех современных браузерах, и он прекрасно работает без каких-либо ошибок в консоли, но при попытке установить ie8 мой XML-файл не загружается.Мой ajax-вызов в порядке, так как selectXml запускается, но не код внутри (с ним не должно быть никаких проблем, поскольку он работает в другом браузере, а я уже проверил проверку XML), боролся в течение нескольких часов.Я думаю, что ie8 не работает должным образом с jquery.

$(document).ready(function() {  
 $.ajax({
    type: "GET",
    url: "menu.xml",
    dataType:"text",
    success: selectXml
});

(моя функция selectXml)

function selectXml (xml) {

    var xmlDoc = $.parseXML(xml);
    console.log(xmlDoc);
    var i = 0,
    j = 0,
    k = 0,
    l = 0,  
    maxCat = $(xmlDoc).find("categorie").length,
    maxPage = 14,
    numPlate = 0,
    numSection = 2,
    page = 0,
    queryXml,
    title,
    theNo, 
    thePlate,
    thePrice,  
    theSection;

    //for each page divide it in 2 sections
    for(i=1; i<=maxPage; i++){
        if( j < maxCat){
        //for each sections add the title and left, right section

            //for each left right section, fill up the dishes
            for(k=0; k<numSection; k++){

                queryXml = $(xmlDoc).find('categorie').eq(j);


                title = queryXml.find("title[lang=" + jQuery.fn.language + "]").text();
                numPlate = queryXml.find('plate').length;
                $('#menu'+ i).append('<section></section>');
                $('section').eq(j).append('<div class="menuTitle"><h1>'+ title +'</h1><div class="ribbon"></div></div><div class="menuLeft"><ul></ul></div><div class="menuRight"><ul></ul></div>');
                theSection = $('section').eq(j);

                for(l=0; l<numPlate; l++){
                    if(l< (numPlate/2)){
                        theNo = queryXml.find('plate').eq(l).find('number').text();
                        thePrice = queryXml.find('plate').eq(l).find('price').text();
                        thePlate = queryXml.find('plate').eq(l).find('description[lang='+jQuery.fn.language+']').text();
                        //console.log(thePlate);
                        $('section').eq(j).find('.menuLeft ul').append('<li><span class="itemNumber">' + theNo +'</span><span class="itemName">'+ thePlate+'</span> <span class="itemPrice">'+ thePrice+'</span></li>');


                    }
                    else {
                        theNo = queryXml.find('plate').eq(l).find('number').text();
                        thePrice = queryXml.find('plate').eq(l).find('price').text();
                        thePlate = queryXml.find('plate').eq(l).find('description[lang='+jQuery.fn.language+']').text();
                        $('section').eq(j).find('.menuRight ul').append('<li><span class="itemNumber">' + theNo +'</span><span class="itemName">'+ thePlate+'</span> <span class="itemPrice">'+ thePrice+'</span></li>');
                    }


                };


                    numPlate = $(this).find('plate').length;

                j++;

            }

        }//end if
    }//end for



}

Ответы [ 3 ]

1 голос
/ 11 июня 2012

Другой способ - заставить IE8 сначала понять элементы html5, добавив что-то вроде Modernizr (http://modernizr.com/) на вашу страницу. Затем позвольте остальным работать так, как мы ожидаем.

0 голосов
/ 20 мая 2013

Я использую этот код ниже, и он работает для меня.Я тестирую на IE8, IE9, chrome, ff без проблем!

// XML content look like this
<root>
    <publish>
        <store>
            <book title="How to fix IE"/>
            <book title="...."/>
        </store>
    </publish>
</root>


// Build XML document
var xDoc = $.parseXML(strXml);

// create new child element using XML Document
var xBook = xDoc.createElement("book");
xBook.setAttribute("title", "How to fix bad ass IE!");
// or you can using jquery
$(xBook).attr("authr", "Bill ...");

// Append child element to some where in XML Document
var xStore = $(xDoc).find("store");
xStore.append(xBook);
0 голосов
/ 23 ноября 2011

проблема в коде добавления, где я использую разделы в качестве контейнера. ie8, вероятно, не понимают этого, поэтому он не показывает информацию, даже если вы предупреждаете, что он правильно показывает содержимое моего xml ... что за беспорядок. freaken IE ... Вот мое решение, заменив раздел на div с некоторым классом. Урок: не используйте элемент html5, т. Е. При использовании jquery, изменяющего dom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...