下面的文件说来也奇怪,搞了两天了也没有搞出个门道出来,所以想请大家帮忙
index.html文件在:http://127.0.0.1/index.html       下面用fierfox浏览器下执行报错(iis为web服务器)
index.html文件在:http://127.0.0.1:81/index.html    下面用fierfox浏览器下执行报错(apach为web服务器)
index.html文件在:file:///F:/php/index.html         也就是说不经过web服务器,直接用fierfox浏览器运行,不报错
index.html内容如下:<html>
    <head>
        <title>Test</title>
<script language = "javascript" >
function XmlDom()
{
if(window.ActiveXObject)
{            
var arrSignatures = ["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"];
for(var i=0; i<arrSignatures.length; i++)
{
try
{
var oXmlDom = new ActiveXObject(arrSignatures[i]);//创建IE中的oXmlDom实例
return oXmlDom;
}
catch(exception)
{
//ignore
}
}
throw new Error("Your browser doesn't support an XML DOM object!!!!!");
}
else if(document.implementation && document.implementation.createDocument)
{
var oXmlDom = document.implementation.createDocument("","",null);//创建Mozilla中的oXmlDom实例
oXmlDom.parseError =
{
valueOf:function(){return this.errorCode},
toString:function(){return this.errorCode.toString()}
};
oXmlDom.__initError__();
oXmlDom.addEventListener("load",function()
{
this.__checkForErrors__();
this.__changeReadyState__(4);
},false);
return oXmlDom;
}
else
{
throw new Error("Your browser doesn't support an XML DOM object!!!!!");
}
}
if(document.implementation && document.implementation.createDocument)//初始化Mozilla信息
{
Document.prototype.readState = 0;//创建加载状态特性
Document.prototype.onreadystatechange = null;//创建加载事件
Document.prototype.__changeReadyState__ = function(iReadyState)//加载事件函数
{
this.readyState = iReadyState;
if(typeof this.onreadystatechange == "function")
{
this.onreadystatechange();
}
}
Document.prototype.__initError__ = function()//初始化Mozilla的错误信息
{
this.parseError.errorCode = 0;
this.parseError.filepos = -1;
this.parseError.line = -1;
this.parseError.linepos =-1;
this.parseError.reason = null;
this.parseError.srcText = null;
this.parseError.url = null;
}
Document.prototype.__checkForErrors__ = function()//检查错误信息
{
if(this.documentElement.tagName == "parsererror")
{
var reError = />[\s\S]*?>([\s\S]*?)位置[\s\S]*?([\s\S]*?)行[\s\S]*?(\d+)[\s\S]*?列[\s\S]*?(\d+)[\s\S]*?<sourcetext>([\s\S]*?)<\/sourcetext>/;
reError.test(this.xml);
this.parseError.errorCode = -999999;
this.parseError.reason = RegExp.$1;
this.parseError.url = RegExp.$2;
this.parseError.line = parseInt(RegExp.$3);
this.parseError.linepos = parseInt(RegExp.$4);
this.parseError.srcText = RegExp.$5;

}
}
Document.prototype.loadXML = function(sXml)//添加loadXML方法,以便和IE实现一样
{
this.__initError__();
this.__changeReadyState__(1);
var oParser = new DOMParser();
var oXmlDom = oParser.parseFromString(sXml,"text/xml");
while(this.firstChild)
{
this.removeChild(this.firstChild);
}
for(var i=0; i<oXmlDom.childNodes.length; i++)
{
var oNewNode = this.importNode(oXmlDom.childNodes[i],true);
this.appendChild(oNewNode);
}
this.__checkForErrors__();
this.__changeReadyState__(4);
}
Document.prototype.__load__ = Document.prototype.load;//更新Mozilla的load信息
Document.prototype.load = function(sRUL)//更新Mozilla的load信息
{
this.__initError__();
this.__changeReadyState__(1);
this.__load__(sRUL);
}
Node.prototype.__defineGetter__("xml",function()//为每个节点添加xml特性,以便和IE实现一样
{
var oSerializer = new XMLSerializer();
return oSerializer.serializeToString(this,"text/xml");
});
Element.prototype.selectNodes = function (sXPath)//模仿IE中XPath中的selectNode
{
var oEvaluator = new XPathEvaluator();
var oResult = oEvaluator.evaluate(sXPath, oXmlDom.documentElement, null, 
  XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var aNodes = new Array;
if (oResult != null)
{
var oElement = oResult.iterateNext();
while(oElement)
{
aNodes.push(oElement);
oElement = oResult.iterateNext();
}
}
return aNodes;
   }
   Element.prototype.selectSingleNode = function (sXPath)//模仿IE中XPath中的selectSingleNode
   {
var oEvaluator = new XPathEvaluator();
var oResult = oEvaluator.evaluate(sXPath, oXmlDom.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
if (oResult != null)
{
return oResult.singleNodeValue;

else
{
return null;
}              
   }        
}
var oXmlDom = new XmlDom();
oXmlDom.onreadystatechange = function()
{
if(oXmlDom.readyState == 4)
{
if(oXmlDom.parseError != 0)
{
var oError = oXmlDom.parseError;
alert("An error occurred:\nError Code:" + oError.errorCode + "\n" + "Line: " + oError.line + "\n" + "reason: " + oError.reason);
}
else
{
var iNodes = oXmlDom.documentElement.selectSingleNode("student/sex/name");
alert(iNodes.firstChild.nodeValue);
}
}
}
oXmlDom.load("test.xml"); 
</script>
    </head>
    <body>
    </body>
</html>

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【renqiang_888】截止到2008-07-29 10:19:49的历史汇总数据(不包括此帖):
    发帖的总数量:46                       发帖的总分数:998                      每贴平均分数:21                       
    回帖的总数量:44                       得分贴总数量:5                        回帖的得分率:11%                      
    结贴的总数量:45                       结贴的总分数:898                      
    无满意结贴数:2                        无满意结贴分:40                       
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:97.83 %               结分的百分比:89.98 %                  
    无满意结贴率:4.44  %               无满意结分率:4.45  %                  
    值得尊敬
      

  2.   

    test.xml文件内容如下:<?xml version="1.0" encoding="gb2312"?>
    <root>
    <student>
        <name>张三</name>
        <age>3</age>
        <sex>男</sex>
    </student>
    <student>
        <name>李四</name>
        <age>4</age>
        <sex>
            <name>真的不知道名字</name>
        </sex>
    </student>
    <student>
        <name>王五</name>
        <age>5</age>
        <sex>
            <name>不知道名字</name>
        </sex>
        <sex>
            <name>也不知道名字</name>
        </sex>
    </student>
    </root>
    报错图片如下:
      

  3.   

    你发布目录下的路径可能跟你物理路径不一样。
    修改一下你web发布目录下xml和html的相对路径。
      

  4.   

    看你的错误提示,好象是所有未定义的对象!if(this.documentElement.tagName == "parsererror")仔细检查下!另外注意路径问题!
      

  5.   

    你测试了吗?别的朋友也帮我测试了,但他们没有提示错误,所以我想让大家帮我测试一下,注意要用fierfox浏览器.ie下面测试正常
      

  6.   

    我是楼主:如果你的firefox没有安装firebug的话,是看不到错误的.
      

  7.   

    .....
    lz你有必要检查下你的服务器配置了...- -!apache2.2.9+firefox2.0.16
    没问题,一切正常.弹出一个"真的没有名字"对话框if(this.documentElement.tagName == "parsererror") 
    这句话在找不到test.xml时才会报错...lz你那个xml文件是不是放的地方有问题啊?
      

  8.   

    大家有的说有问题,有的说没有问题,我最后再解释一次: 
    您用firefox浏览器运行脚本,并且必须安装firebug之后,错话才能出来. 
    我把程序放在了:http://zzjxyh.cn/test/index.html大家可以访问看一下, 
    源码和我在一楼发的源码是一样的,大家看一下报什么错误
      

  9.   

    楼主是不是用的FireFox3?FireFox3好像很多地方与FireFox2用差别,特别是JS上面
      

  10.   

    我用ie7测试了以下,alert"真的不知道名字".
      

  11.   


    firefox读取时候的问题。。?
      

  12.   

    ok
    问题帮你找到了...是ff3的firebug的问题..它导致了某些属性识别问题(这里我也不知到怎么表达)打个最简单的比方firstChild这个属性,(你用的this.documentElement也是这问题),在你卸载后(仅仅禁用不行),它能正确找到相应node,但是一旦装有firebug后就会有问题(仅限于ff3的firebug,ff2的没问题),会提示无此属性在ff的论坛里也有人提了相应问题...见下
    http://support.mozilla.com/tiki-view_forum_thread.php?locale=zh-TW&comments_parentId=90503&forumId=1
      

  13.   

    我用firefox测试了以下,alert"真的不知道名字".没报错