Корневой узел не обнаружен при загрузке XML в IE с использованием Javascript - PullRequest
0 голосов
/ 24 февраля 2010

Я пытаюсь проанализировать XML-файл, используя Javascript, и у меня возникают проблемы с IE7.

Если у меня есть этот код:

function LoadXml()
{
    var xmlPath = document.getElementById("hsTreeviewXmlPath").value;

    var xmlhttp=false;
    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    // JScript gives us Conditional compilation, we can cope with old IE versions.
    // and security blocked creation of the objects.
     try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      alert("here1");
     } catch (e) {
      try {
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       alert("here2");
      } catch (E) {
       xmlhttp = false;
      }
     }
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
            alert("here3");
        } catch (e) {
            xmlhttp=false;
        }
    }
    if (!xmlhttp && window.createRequest) {
        try {
            xmlhttp = window.createRequest();
            alert("here4");
        } catch (e) {
            xmlhttp=false;
        }
    }

    xmlhttp.open("GET",xmlPath,false);
    xmlhttp.send(null);

    var xmlDoc = xmlhttp.responseXML;

    ParseXml(xmlDoc);
}

function ParseXml(xmlDoc)
{
    var root = xmlDoc.documentElement;
    alert(root);

    for(i=0; i< root.childNodes.length; i++)
    {
        var node = root.childNodes[i];
        if(node.nodeType ==1) //process element nodes (type 1)
        {
            if(node.childNodes.length > 1)
            {
                CreateChildren("hsTreeview",node);
            }
            else
            {
                AddNode("hsTreeview", node);
            }
        }
    }
}

В FF и Chrome это работает правильно, добавляя узлы, как и должно, но в IE7 я получаю ошибку сценария и конкретную ошибку:

Требуется объект

Это дает номер строки, относящийся к строке:

for(i=0; i< root.childNodes.length; i++)
{

В окне предупреждения указывается, что в IE корневой узел, который заполняется с xmlDoc.documentElement, является нулевым.

Я подтвердил, используя предупреждения здесь1 и т. Д., Что в IE7 он использует объект xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");.

Есть ли способ исправить это, так как это действительно расстраивает?

1 Ответ

1 голос
/ 24 февраля 2010

Убедитесь, что файл XML содержит правильный тип MIME text / xml.

Изменить сильфон:

Также убедитесь, что файл XML подается через сервер http с того же домена и порта , что и веб-страница. IE будет препятствовать доступу веб-страницы к URL-адресам вне исходного домена или файлам на локальном компьютере по соображениям безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...