Я пытаюсь написать решение для Internet Explorer 8 для загрузки XML по «файловому» протоколу, так как сайт, который я создаю, предназначен для отправки в виде пакетов непосредственно пользователям. Все, что я испытал при попытке использовать XMLHttpRequest для обработки этого, похоже, поддерживает то, что я прочитал в Интернете: реализация XMLHttpRequest в IE8 не нравится протоколу, поэтому я должен использовать ActiveXObject для обработки загрузки.
Я экспериментировал с предложениями разных людей и, наконец, получил код, который, кажется, успешно получает файл, так как поле responseText заполнено содержимым файла. Однако поле responseXML.xml, в котором должен храниться XML (или его текстовое представление, ни одна из прочитанных мной документов не была очень ясной), всегда является пустой строкой. Как я могу настроить ActiveXObject для правильной загрузки XML?
В качестве бонуса кто-то может также объяснить, как я должен использовать загруженный XML после его успешной загрузки? Мне еще предстоит найти какие-либо документы, которые объясняют это.
Вот мой JavaScript:
function isIE() {
return navigator.userAgent.lastIndexOf('Trident') > 0;
}
// This block ensures that the XML request occurs in the same domain.
var path = document.location.href;
path = path.substr(0, path.lastIndexOf('/') + 1);
if (isIE() && location.protocol == 'file:') {
var xmlRequest = new ActiveXObject('MSXML2.XMLHTTP');
xmlRequest.open('GET', path + 'xml/shared.xml', false);
xmlRequest.onreadystatechange = useXML;
xmlRequest.send();
function useXML() {
if (xmlRequest && xmlRequest.readyState && xmlRequest.readyState == 4) {
alert(xmlRequest.responseText); // displays the file
alert(xmlRequest.responseXML.xml); // displays nothing
}
}
}
А вот мой XML-файл:
<?xml version="1.0" encoding="ISO-8859-1"?>
<shared>
<page_title>
Test Page Title
</page_title>
</shared>
Я использовал валидатор XML w3schools, чтобы проверить, не поврежден ли этот файл. Это не так.