我使用传统的JavaScript编写程序来读取xml文件。
<script type="text/javascript">
var xmlDoc;
function loadxml(sImportXML) {
if( window.ActiveXObject && /Win/.test(navigator.userAgent) ) {
xmlDoc = new ActiveXObject("Msxml.DOMDocument");
xmlDoc.async = false;
xmlDoc.onreadystatechange = function () {
if (xmlDoc.readyState == 4) readXML();
}
xmlDoc.load(sImportXML);
}
else if( document.implementation && document.implementation.createDocument ) {
xmlDoc = document.implementation.createDocument("","",null);
xmlDoc.async=false;
alert(sImportXML);
var loaded = xmlDoc.load(sImportXML);
if (loaded) {
readXML();
}
}
else {
alert("Your browser can\'t handle this script");
return;
}
}
<body onload="loadxml('../XML/Question.xml');">
上部loadxml函数在IE上正常运行但在firefox上没有运行
警报线显示此值 ../ XML / Question.xml
但xmlDoc.Load函数无法正常运行
它回复错误访问受限制的URI被拒绝
请有人帮助我。
答案 0 :(得分:2)
在Firefox中,javascript不允许您访问用户本地文件系统上的文件;没有办法做到这一点。这将是一个巨大的安全漏洞。
这适用于带有ActiveX的Internet Explorer,因为ActiveX是一个即插即用的应用程序模块系统(有点像迷你浏览器插件),其中的应用程序,如“Msxml.DOMDocument”,具有比javascript更强大的功能,并且可以访问用户本地文件系统上的文件。
但是document.implementation
是常规的javascript,因此它具有所有正常的安全限制,主要是用户的文件系统不受限制。
如果XML文件在服务器上,您可以嵌入html代码,如下所示:
<script id="the-xml" type="text/xml">
....your xml document contents here....
</script>
然后你可以用这样的javascript获取内容:
var sImportXML = document.getElementById('the-xml').text;
但是根据你的应用程序,根本不使用javascript xml可能是有意义的。通常,您将在服务器端解析xml,并使用json或html代码段中的javascript进行通信。