WEB开发网
开发学院网页设计JavaScript IE和Firefox的Javascript兼容性总结 阅读

IE和Firefox的Javascript兼容性总结

 2010-01-12 00:00:00 来源:WEB开发网   
核心提示: removeNode(true)表示删除指定节点及其所有下属节点,被删除的节点成为了孤立节点,IE和Firefox的Javascript兼容性总结(6),不再具有有孩子节点和双亲节点,【兼容处理】Firefox中节点没有removeNode方法,Firefox在遍历子节点时,不妨在for循环里加

removeNode(true)表示删除指定节点及其所有下属节点。被删除的节点成为了孤立节点,不再具有有孩子节点和双亲节点。

【兼容处理】Firefox中节点没有removeNode方法,只能用removeChild方法代替,先回到父节点,在从父节点上移除要移除的节点。

node.parentNode.removeChild(node); 
 // 为了在ie和firefox下都能正常使用,取上一层的父结点,然后remove。

7. childNodes获取的节点

【分析说明】childNodes的下标的含义在IE和Firefox中不同,看一下下面的代码:

<ul id="main">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<input type=button value="click me!" onclick=
"alert(document.getElementById('main').childNodes.length)">

分别用IE和Firefox运行,IE的结果是3,而Firefox则是7。Firefox使用DOM规范,"#text"表示文本(实际是无意义的空格和换行等)在Firefox里也会被解析成一个节点,在IE里只有有实际意义的文本才会解析成"#text"。

【兼容处理】

方法一,获取子节点时,可以通过node.getElementsByTagName()来回避这个问题。但是 getElementsByTagName对复杂的DOM结构遍历明显不如用childNodes,因为childNodes能更好的处理DOM的层次结构。

方法二,在实际运用中,Firefox在遍历子节点时,不妨在for循环里加上:

if(childNode.nodeName=="#text") continue;//或者使用nodeType == 1。

这样可以跳过一些文本节点。

延伸阅读

《IE和FireFox中的childNodes区别》

8. Firefox不能对innerText支持

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:IE Firefox Javascript

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接