childNodes behavior diffrent in IE & FF

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)
    }
  }
}
}

你可能感兴趣的:(IE,childNodes,FF)