当前位置:首页 > 开发 > Web前端 > 前端 > 正文

childNodes behavior diffrent in IE & FF

发表于: 2011-09-02   作者:chujiazhen   来源:转载   浏览次数:
摘要: IE and FF count in different ways the childNodes. FF (DOM compliant mode) counts even the possible textNodes (the gaps between tags) while IE counts only some of them. To avoid this, use one the so
IE and FF count in different ways the childNodes. FF (DOM compliant mode) counts even the possible textNodes (the gaps between tags) while IE counts only some of them.

To avoid this, use one the solutions:
1. use getElementsByTagName() rather than childNodes[]
2. use a while loop and nodeType attribute to check whether a child is a tag or a text
3. use a "gaps cleaner" code onload :
4. manually clear the gaps, of course
Code:

var notWhitespace = /\S/;
function cleanWhitespace(node) {
  for (var x = 0; x < node.childNodes.length; x++) {
    var childNode = node.childNodes[x]
    if ((childNode.nodeType == 3)&&(!notWhitespace.test(childNode.nodeValue))) {
// that is, if it's a whitespace text node
      node.removeChild(node.childNodes[x])
      x--
    }
    if (childNode.nodeType == 1) {
// elements can have text child nodes of their own
      cleanWhitespace(childNode)
    }
  }
}
}

childNodes behavior diffrent in IE & FF

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在操作dom遇到问题,使用childNodes取得Div节点的Div子节点,IE浏览器中没有任何问题,而FF浏览器会
在操作dom遇到问题,使用childNodes取得Div节点的Div子节点,IE浏览器中没有任何问题,而FF浏览器会
在操作dom遇到问题,使用childNodes取得Div节点的Div子节点,IE浏览器中没有任何问题,而FF浏览器会
嗯,这是前几天写一个遍历双层List集合,动态输出对应的表格并且控制固定表头的效果时发现的一个知
$=function(id){return typeof (id) == 'string' ?document.getElementById(id):null} ; with($('mo
给FF添加了IE专有的属性和方法: <script language="JavaScript" type="Text/JavaScript"> &l
function getAbsPoint(e) { var x = e.offsetLeft, y = e.offsetTop; while(e=e.offsetParent) { x
function getAbsPoint(e) { var x = e.offsetLeft, y = e.offsetTop; while(e=e.offsetParent) { x
function getAbsPoint(e) { var x = e.offsetLeft, y = e.offsetTop; while(e=e.offsetParent) { x
layerX和layerY以及offsetX和offsetY是来获取相对于触发事件发生的元素上,鼠标的坐标位置的,但是
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号