javascript - 使用 IE 11 加载本地 XML 文件

标签 javascript jquery xml asynchronous internet-explorer-11

我正在做一个简单的项目,它涉及通过本地 .html 文件将本地 .xml 文件加载到 DOM 结构中。我们可以假设 .html 和 .xml 文件放在同一台计算机上的同一文件夹中。问题是 IE 11 不允许与本地 xml 文件进行任何交互。 (SCRIPT5:访问被拒绝。)

到目前为止,我尝试了这个解决方案(解决方案 1,2 在 Mozilla FireFox 和 Google Chrome 中经过测试和运行,Microsoft Edge 有一些不同的问题 - 请参阅第一个代码片段):

同步/异步 XMLHttpRequest(示例中为异步)

function loadXMLDoc(doc)
{
    try{
        xmlhttp = new XMLHttpRequest();
    }catch(e){
        try {
            xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.3.0");
        }
        catch(e){
            try {
                xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
            }
            catch(e)    {
                try {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(e)    {
                    alert("XMLHTTP Not Supported On Your Browser");

                }
            }
        }
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) /*Microsoft edge returns status 0 here */
        {
            alert(xmlhttp.responseText);
        }
    };
    xmlhttp.open("GET",doc,true);/*IE11 prints "SCRIPT5: Access is denied." into console*/
    xmlhttp.send();
}

JQuery异步解决方案

window.onload = function() {
$.ajax({
        url: "output.xml",
        aync: true,
        success: myHandle,
        isLocal:true,
        dataType: "xml"
    });
}

function myHandle(data) {
    alert(data);
}

第三个解决方案由简单的 node.js 网络服务器 组成(参见 Using node.js as a simple web server ) 但这对我来说似乎太大了。 还有一个问题是 Web 服务器必须通过 cmd/脚本显式启动,但我只想点击 .html 并查看解释的 xml 数据。

TL;DR 我的问题是:

  • 是否有任何解决方法可以使本地 .xml 文件可供访问 IE11?
  • 为什么这种“安全风险”对 IE 而不是其他人?

注意: 由于 .xml 文件可以有更多 Mb,我更喜欢异步解决方案。

谢谢。

最佳答案

如果您尝试将文件路径作为本地路径提供,那么它也无法在其他浏览器中使用普通 javascript,并且您可能会遇到跨域错误。如果您有网络服务器,您可以将文件放在适当的位置,并提供 "http://localhost/.../file.xml" 形式的路径。 .这可能会有所帮助。

关于javascript - 使用 IE 11 加载本地 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32200906/

相关文章:

javascript - 你如何在某物周围画一个圆圈?

android - android中的Glassmorphism效果

java - 升级到 Struts 2.3.15 - 约定插件导致启动时崩溃

javascript - 如何获取与当前 DOM 树对应的 HTML?

javascript - Goo.gl 的 url 缩短 API 的列表分析

jQuery .on ('click' ) 使用绝对位置时出现问题

Java解析XML : getElementsByTagName returns all elements

javascript - 删除元素并通过 .click 将它们带回来

javascript - 为什么数组的旧内容被删除了?

jquery - 如何在html中重置文件控件的值