eric-1001c

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  3 随笔 :: 45 文章 :: 12 评论 :: 0 Trackbacks
W3C针对XHTML以及HTML开发一种DOM,这个DOM是基于HTMLElement和HTMLDocument实现的。除了少数元素只包含HTMLElement属性和方法外,每个HTML元素都通过特定的HTMLElement类型表示。然而并不是所以浏览器对DOM都支持的,下面列出了一些经常会遇到的不兼容的DOM使用问题。

1.childNodes
不同浏览器使用childNodes在处理Text节点存在一些差异。Mozilla认为元素之间的空白是Text节点;而IE,会忽略这些空白。可以通过判断childNodes[x].nodeValue == "#text",childNodes[x].nodeType == 1解决这个问题;或者使用children属性,children属性是一个数组,可以通过索引获取子节点;

2.document
IE使用document.all,而使用dom标准的浏览可以通过document.getElementsByTagName("*") ;

3.Id&getElementById
在IE中可以把Id当作元素使用,但在其他浏览器不支持。因此建议使用getElementById,getElementById在IE6中使用,如果元素Name等于Id,也会一同返回;

4.集合数组
IE中在使用集合类对象时候,访问可以通过()[]。建议同一使用[]dom标准访问;

5.body对象
IEbody对象要在<body>标签完全读入才会存在,而在FireFox中一开始就存在

6.Type属性
IEinput标签的type属性是只读的,但在FireFox中是可读写的;

7.removeNodes/removeChild
在FireFox节点中没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

8.ParentNode
IE与FireFox的访问父元素有区别,IE为Obj.ParentElement属性;FireFox为Obj.ParentNode属性解决办法:因为FireFox与IE都支持DOM,因此统一用ParentNode属性

9.set/getAttribute
IE的setAttribute不能设置对象属性、事件属性和style相关的属性,对于自定义的可以设置;要注意在FF中,通过自定义设置的属性和通过.方法设置的属性不是同一个属性;

10.自定义属性
在FF中不支持像IE那样直接获取,建议统一用getAttribute方法;

11.class/className
IE中用”classname”做为属性名来设置或取得css class,FF和其它浏览器用”class”做为属性名来设置或取得,Dom标准的node object具有className属性

12.Range
在IE中有document.selection.createRange(),document.body[button|input].createTextRange();而在FF中可以通过document.getSelection()[.getRangeAt(0)];而对Range的操作中,除了IE和DOM标准的各种move外,FF中的node element还有selectionStart,selectionEnd只读属性


posted on 2009-10-17 16:52 Eric-1001c 阅读(420) 评论(0)  编辑  收藏 所属分类: JavaScript

只有注册用户登录后才能发表评论。


网站导航: