javascript - Node.normalize() 在 IE6 中崩溃

标签 javascript dom internet-explorer-6

我正在用 javascript 对 TextNode 进行一些操作,而且我(不幸的是)需要支持 IE6。 Node.normalize() 崩溃了,我需要解决这个问题。我的第一个倾向是使用其他 DOM 方法重新实现它。我将如何实现?

最佳答案

以下版本比此处发布的其他版本更短、更高效。改进是:

  • 没有重复调用 node.childNodesnode.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/

相关文章:

javascript - 可以禁用 IE6 的 jQuery 吗?

javascript - JS : Regex - replace parts of domains in full text

javascript - 从 javascript 异步查询 Neo4j

java - 如何知道标签是否包含值或另一个标签?

php - PHP中如何解析<a>标签的属性值

css - IE 6 CSS 悬停非 anchor 标记

javascript - 如何使用 javascript 或 jquery 更改 html 元素的 css 属性

javascript - 滚动到 div - jquery - 特定位置

javascript - 跨域访问元素

jQuery 1.4.4 和 IE6 : . live ('change' ) 在模糊之前不会触发复选框