Я практиковал свои навыки XML ES6 для работы и не мог открыть и прочитать xml файл на Chrome.It открыт в Firefox и Edge. Я хотел бы знать, есть ли специальный синтакс для хром или если я набрал что-то неправильно.
Вот сообщение об ошибках от crhome:
index.html: 27 [Усталость] Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной справки проверьте https://xhr.spec.whatwg.org/. (анонимно) @index.html: 27 index.html: 29 Не удалось загрузить файл:///C:/Резервное копирование /Programacion/Practicas/Javascript %20 (ES6)/Practica%203/datos_xml/books.xml: Перекрестное происхождение запросы поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https. (анонимно) @index.html: 29 index.html: 29 Uncaught DOMException: не удалось выполнить 'send' on 'XMLHttpRequest': не удалось загрузить файл:///C: /Backup/Programacion/Practicas/Javascript %20 ( ES6)/Practica%203/datos_xml/books.xml. в файле:///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>
Saludos cordiales.
Важная часть сообщения об ошибке здесь
Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https
Вы загружаете файл из локальной файловой системы, как указано в file://
префикс на url. Поскольку file
не является протоколом схем, поддерживаемых хром для этой цели, вы можете сделать только одну вещь, чтобы сделать эту работу в chrome: используйте одну из названных схем протокола.
Самый вероятный из них - http. Вам нужно будет настроить HTTP-сервер, чтобы обслуживать файлы для вас, вместо загрузки из файловой системы.
Это может быть полезно: https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server
file:///
uri как перекрестное происхождение, даже вfile:///
страница - это своего рода мера безопасности .... попробуйте использовать http-сервер локально ... посмотрите, как в сообщении об ошибке указано Cross origin запросы поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https ... иfile
там нет