gpt4 book ai didi

javascript - 在我打开开发者工具之前,IE 不加载 XML 内容?

转载 作者:数据小太阳 更新时间:2023-10-29 02:03:11 27 4
gpt4 key购买 nike

我有一个页面使用 jQuery AJAX 获取请求从 XML 文件加载产品信息。这在 FF 和 Chrome 中运行良好,但内容不会在 IE 中加载。然而,它会在打开开发者窗口并刷新页面后加载数据!有谁知道为什么吗?

这是我的 jQuery AJAX 请求:

//Load the xml file
$.ajax({
type: "GET",
url: "xml/" + cat + ".xml",
dataType: ($.browser.msie) ? "text" : "xml",
success: function(data) {
alert('xml successfully loaded');
var xml;
if (typeof data == "string") {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(data);
} else {
xml = data;
}
//Get total number of products in the category
$(xml).find('dataroot').each(function() {
var pTemp = $(this).attr('count');
catName = $(this).attr('catTitle');
console.log(catName);
pTotal = Number(pTemp);
});

//Fill the correct entries onto the page
while (count<=pTotal) {
$(xml).find('product').each(function() {
if (count>lCounter && count<hCounter) {
var pName = $(this).find('ProductName').text();
var pImage = $(this).find('Photo').text();
var pCode = $(this).find('ProductCode').text();
var pDesc = $(this).find('WebDescription').text();
if (cat.substring(0,2)=='cs') {
var pPrice = $(this).find('PartyShackPrice').text();
} else { var pPrice = $(this).find('RRP').text(); }
var pSize = $(this).find('size').text();
var pLink = '<a href="item.html?'+cat+'-'+pCode+'">';

var pHTML = '<div id="'+pCode+'" class="box">';
pHTML += pLink + '<img src="images/SMALL_IMAGE/' + pImage + '" width="70" height"100" /></a>';
pHTML += '<div class="boxText">';
pHTML += pLink + '<div class="boxTitle">'+pName+'</div></a>';
pHTML += '<div class="boxDesc">'+pDesc+'</div>';
if (pSize !== 'Not Applicable') { pHTML += '<div class="boxSize">'+pSize+'</div>'; }
pHTML += '<div class="boxPrice">£'+pPrice+'</div>';
pHTML += pLink + '<div class="boxBuy"></div></a>';
pHTML += '</div></div>';

$("#products").append(pHTML);
}
count +=1;
});
}

//Work out the total number of pages the product list is split up into
if (pTotal%50==0) { pageTotal = pTotal/50; }
else { pageTotal = Math.floor(pTotal/50) + 1; }
console.log('pageTotal - ' + pageTotal);


//Show path of the current page
getPath(cat, catName, 0);

//Depending on page number show previous and next buttons and display product counter
if (pageTotal==1) { //page 1 and only one page
$("#prev").css("visibility", "hidden");
$("#next").css("visibility", "hidden");
$("#counter").append('1 - ' + pTotal + ' of ' + pTotal);
} else if ((pageNum==1) && (pageTotal!=1)) { //page 1 and multiple pages
$("#prev").css("visibility", "hidden");
$("#next").append('<a href="products.html?'+cat+'-'+(pageNum+1)+'">Next &gt;&gt;</a>');
$("#counter").append('1 - 50 of ' + pTotal);
} else if ((pageNum==pageTotal) && (pageTotal!=1)) { //last page when theres more than 1 page
$("#next").css("visibility", "hidden");
$("#prev").append('<a href="products.html?'+cat+'-'+(pageNum-1)+'">&lt;&lt; Previous</a>');
$("#counter").append((((pageNum-1)*50)+1) + ' - ' + pTotal + ' of ' + pTotal);
} else { // a middle page
$("#next").append('<a href="products.html?'+cat+'-'+(pageNum+1)+'">Next &gt;&gt;</a>');
$("#prev").append('<a href="products.html?'+cat+'-'+(pageNum-1)+'">&lt;&lt; Previous</a>');
$("#counter").append((((pageNum-1)*50)+1) + ' - ' + (pageNum * 50) + ' of ' + pTotal);
}

//Display page number
$("#currentPage").append(' ' + pageNum + ' of ' + pageTotal);
},
error: function() { alert('failure'); }
});
});

此外,IE 应该调用成功警报或错误警报,但在打开开发人员窗口并刷新页面之前它不会调用。

谢谢

最佳答案

通过阅读 SO 主页上的问题标题,我知道问题出在哪里。阅读问题中的代码证实了这一点。您遇到的问题是行 console.log(catName);

IE(和其他一些浏览器)在打开开发者窗口之前不会初始化 console 对象。

在此之前,尝试使用console 将返回undefined,并导致您的脚本停止运行。

这里的第一课是不要在完成程序后将调试代码留在程序中。对 console 的调用应该只在您测试程序时出现;完成后,将它们取出。

第二个教训是,如果您确实需要在您的代码中调用console,您应该将它们包装在代码中以检查console 在尝试使用它之前就已经存在。有多种方法可以做到这一点,从简单的 if(console) {console.log(...);} 一直到编写您自己的调试类。如何操作取决于您,但通常以这种方式编写所有 console 代码是个好主意,即使您只是进行一些调试,也可以避免您遇到的问题在这里吃。

希望对您有所帮助。

关于javascript - 在我打开开发者工具之前,IE 不加载 XML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836691/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com