ie提供的children、childnodes和firefox下的childnodes的行为是有区别的,firefox下childnodes会把换行和空白字符都算作父节点的子节点,而ie的childnodes和children不会。比如:
yizhu2000
d为dd的div在ie下用childnodes查看,其子节点数为1,而ff下为三,我们可以从firefox的dom查看器里面看到他的childnodes为[\n , div, \n]。
要在firefox下模拟children的属性我们可以这样做:
if (typeof(htmlelement) != undefined && !window.opera) { htmlelement.prototype.__definegetter__(children, function() { for (var a = [], j = 0, n, i = 0; i
2. firefox和ie的事件
window.event只能在ie下使用,而不能用在firefox下,这是因为firefox的event只能在事件发生的现场使用。 firefox必须从源处加入event作参数传递。ie忽略该参数,用window.event来读取该event。
比方说下面这个在ie下获得鼠标位置的方法:
获得鼠标点击横坐标
需要改成
获得outerhtml
才能在两种浏览器下使用
3.html对象获取问题
firefox获取方式document.getelementbyid(idname)
ie使用document.idname或者document.getelementbyid(idname)
解决办法:统一使用document.getelementbyid(idname);
4. const问题
在firefox下,可以使用const关键字或var关键字来定义常量;
ie下,只能使用var关键字来定义常量;
解决方法:统一使用var关键字来定义常量。
5.frame问题
以下面的frame为例:
a)访问frame对象
ie:使用window.frameid或者window.framename来访问这个frame对象,frameid和framename可以同名;
firefox:只能使用window.framename来访问这个frame对象;
另外,在ie和firefox中都可以使用window.document.getelementbyid(frameid)来访问这个frame对象;
b) 切换frame内容
在 ie和firefox中都可以使用
window.document.getelementbyid(testframe).src = xxx.html或window.framename.location = xxx.html
来切换frame的内容;
如果需要将frame中的参数传回父窗口(注意不是opener,而是parent),可以在frame中使用parent来访问父窗口。例如:
parent.document.form1.filename.value=aqing;
6. body问题
firefox的body在body标签没有被浏览器完全读入之前就存在;而ie的body则必须在body标签被浏览器完全读入之后才存在;
7. firefox与ie的父元素(parentelement)的区别
ie:obj.parentelement
firefox:obj.parentnode
解决方法:因为firefox与ie都支持dom,因此全部使用obj.parentnode
8.innertext的问题
innertext在ie中能正常工作,但是innertext在firefox中却不行,需用textcontent;
解决方法:
if (navigator.appname.indexof(explorer) > -1) { document.getelementbyid('element').innertext = my text;} else { document.getelementbyid('element').textcontent = my text;}
9.ajax获取xmlhttp的区别
var xmlhttp;if (window.xmlhttprequest) { xmlhttp = new xmlhttprequest();} elseif (window.activexobject) { // ie的获取方式 xmlhttp = new activexobject(microsoft.xmlhttp);}
注意:在ie中,xmlhttp.send(content)方法的content可以为空,而firefox则不能为null,应该用send(),否则会出现411错误。
