Почему мой код JavaScript для обработки XML не работает в Safari? - PullRequest
1 голос
/ 27 ноября 2009

Я использую следующий код, чтобы открыть документ 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');

1 Ответ

0 голосов
/ 27 ноября 2009

спасибо, что ваш комментарий был полезен для решения проблемы. Я добавлю свой код, если кто-то посчитает полезным, проблема была в следующем: document.implementation.createDocument ("", "", null); 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...