导读:
最近,跑ajax的javascript程序的时候,老出现在ie里能正常执行,而在firefox里不能执行的情况,总以为是由于firefox和ie的读取dom的方式的差异引起的,找了很长一段时间的原因以后,发现firefox和ie在读取dom时还另有“隐情”。
<%@ page language="java" contentType="text/xml; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%><%
String str = request.getParameter("str");
if("".equals(str)){
str = " ";
}
String key[] = {"1","2","3","4","5","6","7","8"};
String context[] = {"am","ambulance","alex","balance","best","nine","ninetown","ninetonws"};
//String key[] = {"1","4","5","6","7","8"};
//String context[] = {"am","balance","best","nine","ninetown","ninetonws"};
out.println(" "); out.println(" ");
for(int i = 0; i
int kIndex = context[i].toLowerCase().indexOf(str.toLowerCase());
if(kIndex == 0){
out.println(" ");
out.println(" "+key[i]+" ");
out.println(" "+context[i]+" ");
out.println(" ");
}
}
out.println(" ");
%>
这是一段很普通输出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,如下,也没有问题了。
<%@ page language="java" contentType="text/xml; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%><%
String str = request.getParameter("str");
if("".equals(str)){
str = " ";
}
String key[] = {"1","2","3","4","5","6","7","8"};
String context[] = {"am","ambulance","alex","balance","best","nine","ninetown","ninetonws"};
//String key[] = {"1","4","5","6","7","8"};
//String context[] = {"am","balance","best","nine","ninetown","ninetonws"};
out.print(" "); out.println(" ");
for(int i = 0; i
int kIndex = context[i].toLowerCase().indexOf(str.toLowerCase());
if(kIndex == 0){
out.print(" ");
out.print(" "+key[i]+" ");
out.print(" "+context[i]+" ");
out.print(" ");
}
}
out.print(" ");
%>
最近,跑ajax的javascript程序的时候,老出现在ie里能正常执行,而在firefox里不能执行的情况,总以为是由于firefox和ie的读取dom的方式的差异引起的,找了很长一段时间的原因以后,发现firefox和ie在读取dom时还另有“隐情”。
<%@ page language="java" contentType="text/xml; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%><%
String str = request.getParameter("str");
if("".equals(str)){
str = " ";
}
String key[] = {"1","2","3","4","5","6","7","8"};
String context[] = {"am","ambulance","alex","balance","best","nine","ninetown","ninetonws"};
//String key[] = {"1","4","5","6","7","8"};
//String context[] = {"am","balance","best","nine","ninetown","ninetonws"};
out.println(" "); out.println(" ");
for(int i = 0; i
int kIndex = context[i].toLowerCase().indexOf(str.toLowerCase());
if(kIndex == 0){
out.println(" ");
out.println(" "+key[i]+" ");
out.println(" "+context[i]+" ");
out.println(" ");
}
}
out.println(" ");
%>
这是一段很普通输出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,如下,也没有问题了。
<%@ page language="java" contentType="text/xml; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%><%
String str = request.getParameter("str");
if("".equals(str)){
str = " ";
}
String key[] = {"1","2","3","4","5","6","7","8"};
String context[] = {"am","ambulance","alex","balance","best","nine","ninetown","ninetonws"};
//String key[] = {"1","4","5","6","7","8"};
//String context[] = {"am","balance","best","nine","ninetown","ninetonws"};
out.print(" "); out.println(" ");
for(int i = 0; i
int kIndex = context[i].toLowerCase().indexOf(str.toLowerCase());
if(kIndex == 0){
out.print(" ");
out.print(" "+key[i]+" ");
out.print(" "+context[i]+" ");
out.print(" ");
}
}
out.print(" ");
%>