为什么我的JavaScript XML处理代码不能在Safari中工作?

为什么我的JavaScript XML处理代码不能在Safari中工作?,javascript,xml,safari,cross-browser,Javascript,Xml,Safari,Cross Browser,我使用以下代码打开XML文档。它在Firefox和IE中工作,但在Safari中失败。知道为什么吗 function crearObjetoXML(archivoXML){ //--- IE. if(window.ActiveXObject){ xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load(archivoXML); parsearXML()

我使用以下代码打开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');

谢谢你的评论对解决这个问题很有帮助,如果有人觉得我的代码有用,我会把它放在下面: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');

嗨:不是IE并不一定意味着它就是firefox。恐怕Safari使用了另一种不同的javascript引擎实现。就我个人而言,我希望使用jQuery作为更安全的赌注,因为它几乎隐藏了实际的细节。也许Google for jQuery加载xml文件可以帮你解决这个问题?抱歉,这不能直接回答您的问题。什么版本的safari不起作用?向safari显示了那些假定具有工作文档的测试版本。implementation.createDocument。您可以使用safari 4.0.4531.21.10在im上进行测试