2009-11-11 24 views
0

我的下一个代码在IE工作正常:在其他浏览器如何在非IE浏览器中使用JavaScript加载xml文件?

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

如何做同样的(没有AJAX)?

+0

你是什么意思“没有Ajax”? – 2009-11-11 14:33:32

+0

我的意思是不使用XMLHttpRequest对象。 – Roman 2009-11-11 14:37:47

+0

为什么不呢?您已经在使用ActiveXObject ... – DisgruntledGoat 2009-11-11 14:41:28

回答

0

嗯...你不能用Javascript做到这一点,但没有AJAX。您已经使用AJAX代码(无论如何,微软的AJAX版本)。

我建议您阅读AJAX上的Mozilla tutorial以获得与您的代码相同的跨浏览器。

1

其实,没有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的对象。

+0

这是这种情况,我需要从本地媒体运行它。 – Roman 2009-11-11 14:44:17

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); 
} 
+0

我已经有这样的东西,但我的“文本”在一个文件中,我需要以某种方式加载它。 – Roman 2009-11-11 14:49:50

+1

如果它在一个文件中,并且该文件不包含在页面中,这意味着您有要求文件......根据定义,这意味着你正在通过* J * avascript * A * nd请求一个* X * ml文件来创建一个* A *同步请求....你被AJAX队友困住了。 – jvenema 2009-11-11 15:27:52

0

根据您的使用情况下,使用本地文件,你可以考虑做轮用另一种方式:加载“文档。 xml“文件本身,并使用处理指令应用XSLT样式表将其呈现为HTML。

How to transform XML into XHTML using XSLT

0

我想你使用AJAX时感到困难。

在你的情况下,它包含更多的安全风险,现在开发人员不会使用这种技术,因为它调用窗口的组件,而IE比其他浏览器更喜欢它。所以,你应该研究更多关于ajax的信息,比如jquery或prototype,mootool,它们是非常强大的ajax框架,它们可以很容易地应用你的需求。

祝你好运!

相关问题