我正在用 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;
}
}
关于javascript - Node.normalize() 在 IE6 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023255/