防止文本节点的规范化

时间:2014-07-13 13:38:17

标签: javascript html xml dom xmlnode

在我正在处理的当前项目中,我将某些文本节点拆分为多个节点,以便我可以跟踪它们。我将这些节点存储在某个地方的全局对象中,但出于某种原因,它们会在我需要它们和解析它们之间的某个时间保持规范化。奇怪的是,这不会立即发生,但我无法弄清楚如何防止它......

示例:

<p>
    foo
    bar
    **HELLO**
</p>

在上面的示例中,有一个文本节点:"foo\n bar\n **HELLO**"。我想将此节点拆分为三个单独的文本节点,同时跟踪最后一个节点。

但是,在创建新文本节点,填充它,然后将其附加到其“父(<p>)之后,它会在我追加它后不久进行规范化。”

我需要防止它正常化。

修改

一个简单的代码示例是使用以下内容:

var pElem = document.querySelector('p'),
    textNode = pElem.childNodes[0],
    newNodes = textNode.nodeValue.split(/\s+/g).reverse().map(function(i,v){
        return document.createTextNode(v);
    }),
    curNode = textNode;

textNode.nodeValue = newNodes[0].nodeValue;

for(var x=1;x<newNodes.length;x++) {
    curNode.parentNode.insertBefore(curNode, newNodes[x]);
    curNode = newNodes[x]
}

var lastNode = newNodes[0]; // THIS is what I need to keep track of

我没有测试这段代码;只是把它掀起来基本上,一段时间后它们都合并为一个文本节点(a.k.a。,“normalize”)。

没有其他代码可能正在执行Node.normalize()。这发生在一个独立的测试页面中,其中没有引入其他代码(如 none ;没有其他库,polyfill等)。

希望这有助于家伙!

0 个答案:

没有答案