我正在用javascript处理TextNode,因此(不幸的是)我需要支持IE6。 Node.normalize()崩溃了,我需要解决此问题。我的第一个倾向是使用其他DOM方法重新实现它。我将如何实现呢?
最佳答案
与此处发布的其他版本相比,以下版本更短,更有效。改进之处包括:
node.childNodes
和node.childNodes.length
appendData()
方法编码:
function normalize(node) {
var child = node.firstChild, nextChild;
while (child) {
if (child.nodeType == 3) {
while ((nextChild = child.nextSibling) && nextChild.nodeType == 3) {
child.appendData(nextChild.data);
node.removeChild(nextChild);
}
} else {
normalize(child);
}
child = child.nextSibling;
}
}