如何在非IE浏览器中使用JavaScript加载xml文件?

时间:2009-11-11 14:31:13

标签: javascript xml

我有下一个在IE中运行良好的代码:

xml=new ActiveXObject("MSXML2.DOMDocument");
xml.async=false
xml.load("docs.xml")

如何在其他浏览器中执行相同操作(不使用AJAX)?

6 个答案:

答案 0 :(得分:1)

实际上,如果您的HTML和JavaScript将从本地媒体运行,那么没有AJAX 会有意义,因为您无法对file://执行XMLHttp请求。在这种情况下,您必须使用其他方法来加载XML数据,而不是用于AJAX请求的标准方法。

在Gecko浏览器(Mozilla Firefox等)中,你可以使用

这样的东西
xml = document.implementation.createDocument("","",null);
xml.load("docs.xml", "text/xml");

已知问题document.implementation.createDocument未在Safari / Chrome / Webkit上实施,因此您可能不得不求助于在iframe中加载内容并访问contentDocument对象。 iframe中。

答案 1 :(得分:0)

嗯......你不能用Javascript但不用AJAX。你已经使用了AJAX和你拥有的代码(无论如何都是微软的AJAX版本)。

我建议在AJAX上阅读Mozilla tutorial,以获得与您的代码交叉浏览器相同的内容。

答案 2 :(得分:0)

您可以在Firefox中使用DOMParser

答案 3 :(得分:0)

假设您已经有可用的文本,那么没有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); 
}

答案 4 :(得分:0)

根据您的使用案例,使用本地文件,您可以考虑反过来:加载“docs.xml”文件本身,并使用处理指令应用XSLT样式表将其呈现为HTML。

How to transform XML into XHTML using XSLT

答案 5 :(得分:0)

我认为使用AJAX时感觉很困难。

在你的情况下,它包含更多的安全风险,现在,开发人员不会使用这种技术,因为它调用窗口组件,IE比其他浏览器更喜欢它。

因此,您应该研究有关ajax的更多信息,例如jquery或prototype,mootool,它们是非常强大的ajax框架,它们可以轻松应用您的需求。

祝你好运!