简体   繁体   English

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

[英]Why doesn't my JavaScript XML processing code work in Safari?

I use the following code to open an XML document. 我使用以下代码打开XML文档。 It works in Firefox and IE, but fails in Safari. 它可在Firefox和IE中使用,但在Safari中无法使用。 Any idea why? 知道为什么吗?

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');

thanks ysth it was helpful your comment to solved the problem i will put my code if someone finds it useful the problem was with this: document.implementation.createDocument("","",null); 谢谢,这对解决您的问题很有帮助,如果有人觉得有用,我会把代码放到这里:document.implementation.createDocument(“”,“,null); Firefox creates an XML document but Safari just create a document when it reaches this part: xmlDoc.load it fails cause safari doesn't recognize this so in the code if the try fails it means that its safari then enters catch and use the right functions for safari and everything else its the same. Firefox创建了一个XML文档,但Safari仅在到达此部分时创建了一个文档:xmlDoc.load它失败,因为safari无法识别该错误,因此在代码中,如果尝试失败,则意味着其safari然后输入catch并使用正确的功能野生动物园和其他一切都一样。

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');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM