为什么我的JavaScript XML处理代码不能在Safari中工作?
我使用以下代码打开XML文档。它在Firefox和IE中工作,但在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()
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上进行测试