Javascript 不能在Chrome中加载XML文件,但可以在Firefox和Edge中加载

Javascript 不能在Chrome中加载XML文件,但可以在Firefox和Edge中加载,javascript,xml,google-chrome,dom,Javascript,Xml,Google Chrome,Dom,我在为一份工作练习XML ES6技能,无法在Chrome上打开和读取XML文件。它是在Firefox和Edge中打开的。 我想知道chrome是否有专门的sintax,或者我是否键入了错误的内容 以下是来自crhome的错误消息: index.html:27[Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看。 (匿名)@index.html:27 index.html:29未能加载file:///C:/Back

我在为一份工作练习XML ES6技能,无法在Chrome上打开和读取XML文件。它是在Firefox和Edge中打开的。 我想知道chrome是否有专门的sintax,或者我是否键入了错误的内容

以下是来自crhome的错误消息:

index.html:27[Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请查看。 (匿名)@index.html:27 index.html:29未能加载file:///C:/Backup/Programacion/Practicas/Javascript%20(ES6)/Practica%203/datos_xml/books.xml:跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https。 (匿名)@index.html:29 index.html:29未捕获的DomeException:未能对“XMLHttpRequest”执行“发送”:加载失败file:///C:/Backup/Programacion/Practicas/Javascript%20(ES6)/Practica%203/datos_xml/books.xml'。 在file:///C:/Backup/Programacion/Practicas/Javascript%20(ES6)/Practica%203/index.html:29:6

代码如下:

        <section>
        <form action="/action_page.php">
          <select name="lista_libros" id="lib_list">

          </select>           
        </form> 
    </section>

    <script type="text/javascript">
        var w, documento_cargado,num_lib;
        var tit, aut, anio, prec;
        var array_libros = [];          
        // Create a connection to the file.
        w = new XMLHttpRequest();
        // Define which file to open and send the request.
        w.open("GET", "datos_xml/books.xml", false);
        w.setRequestHeader("Content-Type", "text/xml");
        w.send(null);
        // Place the response in an XML document (CORROBORAR EL NOMBRE DE DONDE LO PONE, CREO QUE ES UN OBJETO NO UN DOCUMENTO).
        documento_cargado = w.responseXML;
        // Place the root node in an element.
        Bookstore = documento_cargado.childNodes[0];
        num_lib = Bookstore.children.length;
        for (var i = 0; i < num_lib; i++){
            tit = documento_cargado.getElementsByTagName("title")[i].childNodes[0].nodeValue;
            aut = documento_cargado.getElementsByTagName("author")[i].childNodes[0].nodeValue;
            anio = documento_cargado.getElementsByTagName("year")[i].childNodes[0].nodeValue;
            prec = documento_cargado.getElementsByTagName("price")[i].childNodes[0].nodeValue;
            array_libros[i] = new Array (tit, aut, anio, prec);             
        }                       
        alert("ssss");
    </script>
    <script type="text/javascript">
        var option, x;
        for(var i = 0; i < num_lib; i++){
            x = document.getElementById("lib_list");
            option = document.createElement("option");
            option.text = array_libros[i][0];
            x.add(option);
        }               
    </script>

var w,documento_cargado,num_lib;
var tit、aut、anio、prec;
var数组_libros=[];
//创建到该文件的连接。
w=新的XMLHttpRequest();
//定义要打开并发送请求的文件。
w、 打开(“GET”,“datos_xml/books.xml”,false);
w、 setRequestHeader(“内容类型”、“文本/xml”);
w、 发送(空);
//将响应放在一个XML文档中(佐证名称为DONDE LO PONE,CREO QUE ES UN OBJETO NO UN DOCUMENTO)。
documento_cargado=w.responseXML;
//将根节点放置在元素中。
Bookstore=documento_cargado.childNodes[0];
num_lib=Bookstore.children.length;
对于(var i=0;i

Saludos cordiales.

此处错误信息的重要部分是

跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https

您正在从本地文件系统加载文件,如url上的
file://
前缀所示。由于
文件
不是chrome支持的协议方案之一,因此只有一件事可以在chrome中实现这一点:使用一个命名的协议方案

最有可能的是http。您需要设置一个http服务器来为您提供文件,而不是从文件系统加载


这可能很有帮助:

Chrome将
文件://
uri视为跨源,即使是在
文件://
服务页面中-这是某种安全措施。。。。尝试在本地使用http服务器。。。查看错误状态跨源请求如何仅支持协议方案:http、数据、chrome、chrome扩展、https。。。而且
文件
不在其中。此外,所有浏览器都会抱怨同步XMLHttpRequest,因为它会对最终用户的应用程序产生有害影响,因此被弃用experience@Jaromanda谢谢你的帮助。我是XML新手,我不知道这是由哪一部分构成的;另外,关于“本地http服务器”,你是怎么说的?我正在从其他浏览器的硬盘上运行HTML文件(这是HTML格式的)。同步不是你的主要问题-你的主要问题是第一条评论。。。但是<代码>w.open(“GET”,“datos_xml/books.xml”,false)错误使其同步-但使其异步无法修复ChromeOkey。我会调查一下。谢谢你的帮助。我可以使用AppServ吗?如果它可以通过http提供文件服务,应该可以。我不知道那个特定的软件,所以我不能提供更多关于它的信息。谢谢你的帮助。Appserv工作得很好。只需将HTML文件拖放到www文件夹中,并将文件路径更改为“localhost”/folder/file.HTML。