IE完全执行最后一次XHR请求

时间:2015-06-18 17:18:25

标签: javascript xmlhttprequest internet-explorer-10

我的网站根据请求通过XHR请求加载其他内容。它在Firefox中运行良好,但IE10搞砸了。 基本上,我循环遍历4个项目的数组,代表我可能要加载的4个页面。如果页面不存在,则丢弃该请求。 以下代码为每个部分创建标题。该部分取自加载的网页并填充以适合主页面。

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

    var xhr_file = xhr_files.replace("xhr_replace",titleArray[i]);

    var sectTitle = document.createElement("P");
        sectTitle.setAttribute ("class","section_title");
        sectTitle.appendChild(document.createTextNode(titleArray[i]));

    if (IsDocumentAvailable(xhr_file)){
        //alert(xhr_file);
        newItem.appendChild(sectTitle);
        var client = new XMLHttpRequest();
        client.open('GET', xhr_file);
        client.send();  

        client.onreadystatechange = function() {
            if (client.readyState == 4) {
                var FileTex = client.responseText;
                var parser = new DOMParser();
                var FileHtml = parser.parseFromString(FileTex, "text/html");                        
                var FileCon = FileHtml.getElementsByTagName("DIV");

                for (var index = 0; index < FileCon.length; index++){
                    var tags = FileCon[index].cloneNode(true);                      
                    var images = tags.getElementsByTagName("IMG");

                    for (var i = 0; i < images.length; i++){
                        var source = images[i].getAttributeNode("src").value;
                        var newSource = source.replace(/(\.\.\/)+/g,"");
                        images[i].setAttribute("src", newSource);
                    };
                    newItem.appendChild(tags);
                };                      
                newWrap.appendChild(newItem);
            };
        };
    };
};

Firefox可以很好地创建标题,并使用网页内容填充该部分。然而,IE10似乎只加载最后一个可用项目,但为所有现有网页创建标题。在IE的网络监视器中,XHR请求完成,内容显示但不在网页中。奇怪的是,当我取消注释alert(xhr_file);时,IE10中显示了所有内容。所以似乎有一个计时错误,但我无法弄清楚在哪里。同步请求无法解决问题。

0 个答案:

没有答案