我使用以下代码打开 XML 文档。它在 Firefox 和 IE 中工作,但在 Safari 中失败。知道为什么吗?
function crearObjetoXML(archivoXML){
//--- IE.
if(window.ActiveXObject){
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load(archivoXML);
parsearXML();
//--- FF.
}else if(document.implementation && document.implementation.createDocument){
xmlDoc = document.implementation.createDocument("","",null);
xmlDoc.load(archivoXML);
xmlDoc.onload = parsearXML;
}else{
alert ('Su navegador no puede soportar este script');
}
}
function parsearXML(){
numrows = xmlDoc.getElementsByTagName('advertise')[0].childNodes.length;
lnks1 = new Array(numrows);
for (var i=0;i<=numrows-1;i++)
{
lnks1[i] = xmlDoc.getElementsByTagName('advertise')[0].getElementsByTagName('item')[i].getAttribute('link');
}
}
crearObjetoXML('../imagerotatorxml.php');
最佳答案
谢谢ysth,您的评论对解决问题很有帮助,如果有人发现它有用,我将放置我的代码,问题在于:document.implementation.createDocument("","",null); Firefox 创建一个 XML 文档,但 Safari 只是在到达这部分时创建一个文档: xmlDoc.load 它失败,因为 safari 无法识别这一点,因此在代码中,如果尝试失败,则意味着 safari 然后进入 catch 并使用正确的函数对于 Safari 和其他一切都是一样的。
var xmlDoc;
function crearObjetoXML(archivoXML){
//---this is for IE.
if(window.ActiveXObject){
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load(archivoXML);
parsearXML();
}else if(document.implementation && document.implementation.createDocument){
try{//--- this is for FF, opera and others.
xmlDoc = document.implementation.createDocument("","",null);
xmlDoc.load(archivoXML);
xmlDoc.onload = parsearXML;
}
catch(e){// if the other one fails enters here for Safari
xmlDoc = new XMLHttpRequest();
xmlDoc.open("GET", archivoXML, false);
xmlDoc.send();
xmlDoc=xmlDoc.responseXML;
parsearXML();
}else{
alert ('Su navegador no puede soportar este script');
}
}
function parsearXML(){
numrows = xmlDoc.getElementsByTagName('advertise')[0].childNodes.length;
lnks1 = new Array(numrows);
for (var i=0;i<=numrows-1;i++)
{
lnks1[i] = xmlDoc.getElementsByTagName('advertise')[0].getElementsByTagName('item')[i].getAttribute('link');
}
}
crearObjetoXML('../imagerotatorxml.php');
关于javascript - 为什么我的 JavaScript XML 处理代码在 Safari 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1806276/