急救,一个在IE和FF下的Dom的奇怪问题。
返回的内容是:
<Content Version= "1.0 ">
<MessageCode> 3 </MessageCode>
<MessageString> 0.3249516 </MessageString>
</Content>
============================================
//其他代码没问题的,就是创建XMLHttpRequest,两个浏览器都可以。
function onReadyState()
{
var ready = REQ.readyState;
if(ready==READY_STATE_COMPLETE){
DOM=REQ.responseXML;
//如果这里创建一个Dom,再load(REQ.responseXML),在FF下连DOM.documentElement都是null了
User_XmlDocument();
}else{
//loading......
}
}
function User_XmlDocument()
{
var XmlRoot = DOM.documentElement;
在ie下:
XmlRoot 的childNodes.length是2;
XmlRoot.childNodes[0],XmlRoot.childNodes[1],这样获取正常。
在FF下:
XmlRoot 的childNodes.length是5;
XmlRoot.childNodes[1],XmlRoot.childNodes[3],这样获取正常。
//郁闷的就在这里,为什么REQ.responseXML的结果一样,但在ie和ff下,XmlRoot的子节点的长度一个是2,一个是5?
而且在FF下,为什么是子节点1和3,不是0,1??????
极度郁闷!!
请高手看看,为什么?
}
------解决方案--------------------关注
------解决方案--------------------FF没用过。帮顶
------解决方案--------------------不知道有没有在创建XmlHttpRequest对象的时候判断浏览器的类型
从而创建不同的XmlHttpRequest对象
------解决方案--------------------疑点一:
你没有在创建XmlHttpRequest对象的时候去判断是否是FF
代码如下
if(window.XMLHttpRequest)
{
//Mozilla 浏览器
xRequest= new XMLHttpRequest();
if(xRequest.overrideMimeType)
{
//设置 MIME 类别
xRequest.overrideMimeType( "text/html ");
}
疑点二:
DOM=REQ.responseXML;//这句话,也不知道你的DOM是在哪申明的
========
IE和FF中创建xmlDom的方法不同。
FF中创建
var Dom= [ "MSXML2.DOMDocument ", "Microsoft.XMLDOM ", "MSXML.DOMDocument ", "MSXML3.DOMDocument "];
IE中创建xmlDom申明
var Dom = new ActiveXObject( "Microsoft.XmlDom ");