Я пытаюсь проанализировать 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");
.
Есть ли способ исправить это, так как это действительно расстраивает?