导读:
最近,跑ajax的javascript程序的时候,老出现在ie里能正常执行,而在firefox里不能执行的情况,总以为是由于firefox和ie的读取dom的方式的差异引起的,找了很长一段时间的原因以后,发现firefox和ie在读取dom时还另有“隐情”。
这是一段很普通输出xml文件的例子。
用下面的这段程序读取和中的值的时候,ie中没有问题,在firefox中一直出现问题。
var rtnvalue = new Array();
var temparray = new Array();
var notes=xmlDoc.getElementsByTagName("rs");
for(var i=0;i var temparray = new Array();
temparray.push(notes[i].firstChild.firstChild.data);
temparray.push(notes[i].lastChild.firstChild.data);
rtnvalue.push(temparray);
temparray = null;
报如下错:
加入debugger信息后,
发现childNodes里多了/n,原来firefox将回车符解释成了一个Text类型的结果,问题找到了,办法自然就有了,要么改变dom的写法控制,要么将html文档重新整理一下,去掉回车符中,我们改变一下写法控制试一下。
var rtnvalue = new Array();
var temparray = new Array();
var notes=xmlDoc.getElementsByTagName("rs");
for(var i=0;i var temparray = new Array();
temparray.push(notes[i].getElementsByTagName("key")[0].firstChild.data);
temparray.push(notes[i].getElementsByTagName("content")[0].firstChild.data);
rtnvalue.push(temparray);
temparray = null;
}
suggest(keywords,keycode,rtnvalue)
就没有问题了。
去掉回车符中在试一下:将out.println改成out.print,如下,也没有问题了。
最近,跑ajax的javascript程序的时候,老出现在ie里能正常执行,而在firefox里不能执行的情况,总以为是由于firefox和ie的读取dom的方式的差异引起的,找了很长一段时间的原因以后,发现firefox和ie在读取dom时还另有“隐情”。
这是一段很普通输出xml文件的例子。
用下面的这段程序读取和中的值的时候,ie中没有问题,在firefox中一直出现问题。
var rtnvalue = new Array();
var temparray = new Array();
var notes=xmlDoc.getElementsByTagName("rs");
for(var i=0;i var temparray = new Array();
temparray.push(notes[i].firstChild.firstChild.data);
temparray.push(notes[i].lastChild.firstChild.data);
rtnvalue.push(temparray);
temparray = null;
报如下错:

加入debugger信息后,

发现childNodes里多了/n,原来firefox将回车符解释成了一个Text类型的结果,问题找到了,办法自然就有了,要么改变dom的写法控制,要么将html文档重新整理一下,去掉回车符中,我们改变一下写法控制试一下。
var rtnvalue = new Array();
var temparray = new Array();
var notes=xmlDoc.getElementsByTagName("rs");
for(var i=0;i var temparray = new Array();
temparray.push(notes[i].getElementsByTagName("key")[0].firstChild.data);
temparray.push(notes[i].getElementsByTagName("content")[0].firstChild.data);
rtnvalue.push(temparray);
temparray = null;
}
suggest(keywords,keycode,rtnvalue)
就没有问题了。
去掉回车符中在试一下:将out.println改成out.print,如下,也没有问题了。