IE9看到的XML节点与其他浏览器的索引不同

时间:2014-02-06 20:03:05

标签: javascript ajax xml internet-explorer xmlhttprequest

以下是我尝试跨浏览器功能的片段:

xmlhttp.open("GET", "/wp-content/testimonials.xml", true);

if (xmlhttp.addEventListener) {
    xmlhttp.addEventListener("load", retrieveTestimonial, false);
}
else if (xmlhttp.attachEvent) {
    xmlhttp.attachEvent("onload", retrieveTestimonial);
}

xmlhttp.send();

function retrieveTestimonial () {
    xmlDoc = xmlhttp.responseXML;
    //Get DOM elements ready to be replaced by relevant testimonial info
    var testimonial = document.getElementById("foot-testimonial");
    var xmlTags = xmlDoc.getElementsByTagName("PROGRAM");
    ... more

我加入这个特定代码块的原因是因为我的脚本在Chrome,Firefox,IE11,Safari甚至是Android浏览器中呈现得很好。但是,在IE9中,我对retrieveTestimonial函数中设置的某些变量未定义。如果我尝试将任何这些变量(xmlTags等)记录到IE9中的控制台,我得到'is undefined'。所以,据我所知,该函数未被调用,这表明XHR加载事件未触发。

编辑:该函数正在触发,因为我能够将变量xmlDoc记录到控制台(对象)。出于某种原因,IE9不喜欢我的一些XML分配,因为它们返回undefined。这是函数的其余部分:

for(var i = 0; i < xmlTags.length; i++) {

    //If the program name from the URL matches the <WEBTITLE> value
    if (progName == xmlTags[i].childNodes[1].childNodes[0].nodeValue) {

        // Get each relevant piece of info from the XML file
        var progTitle = xmlTags[i].childNodes[3].childNodes[0].nodeValue;
        var studentName = xmlTags[i].childNodes[5].childNodes[0].nodeValue;
        var textBody = xmlTags[i].childNodes[7].childNodes[0].nodeValue;

        break;
    }

IE9似乎不喜欢在与其他浏览器相同的索引上看到节点,尽管我还没有找到原因。

是否有一个已知的解决方法或我只是遗漏了一些简单的东西?我讨厌在jQuery中重写脚本,例如,考虑到它在其他地方的工作就像一个魅力。

0 个答案:

没有答案