我的下一个代码在IE工作正常:在其他浏览器如何在非IE浏览器中使用JavaScript加载xml文件?
xml=new ActiveXObject("MSXML2.DOMDocument");
xml.async=false
xml.load("docs.xml")
如何做同样的(没有AJAX)?
我的下一个代码在IE工作正常:在其他浏览器如何在非IE浏览器中使用JavaScript加载xml文件?
xml=new ActiveXObject("MSXML2.DOMDocument");
xml.async=false
xml.load("docs.xml")
如何做同样的(没有AJAX)?
嗯...你不能用Javascript做到这一点,但没有AJAX。您已经使用AJAX代码(无论如何,微软的AJAX版本)。
我建议您阅读AJAX上的Mozilla tutorial以获得与您的代码相同的跨浏览器。
您可以在Firefox中使用DOMParser。
其实,没有AJAX有一定道理,如果你的HTML和JavaScript将会从本地媒体上运行,因为你不能做XMLHTTP请求到file://
。在这种情况下,您必须诉诸其他方法来加载XML数据,而不是用于AJAX请求的标准数据。
Gecko浏览器(Mozilla Firefox和一样),你可以使用类似
xml = document.implementation.createDocument("","",null);
xml.load("docs.xml", "text/xml");
做到这一点这是一个已知的问题,document.implementation.createDocument
没有在Safari /铬/ WebKit的执行,所以你可能有要求将内容加载到iframe中并访问iframe的对象。
这是这种情况,我需要从本地媒体运行它。 – Roman 2009-11-11 14:44:17
假如你已经有可用的文本,没有ajax是有意义的。 xml.load(...)仍然使用异步调用来获取文档。如果你想要一个跨浏览器的XML解析器,你会想尝试:
if (window.DOMParser)
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(text,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
}
根据您的使用情况下,使用本地文件,你可以考虑做轮用另一种方式:加载“文档。 xml“文件本身,并使用处理指令应用XSLT样式表将其呈现为HTML。
我想你使用AJAX时感到困难。
在你的情况下,它包含更多的安全风险,现在开发人员不会使用这种技术,因为它调用窗口的组件,而IE比其他浏览器更喜欢它。所以,你应该研究更多关于ajax的信息,比如jquery或prototype,mootool,它们是非常强大的ajax框架,它们可以很容易地应用你的需求。
祝你好运!
你是什么意思“没有Ajax”? – 2009-11-11 14:33:32
我的意思是不使用XMLHttpRequest对象。 – Roman 2009-11-11 14:37:47
为什么不呢?您已经在使用ActiveXObject ... – DisgruntledGoat 2009-11-11 14:41:28