使用 rangy 库时随机接收反序列化位置错误

int*_*_88 5 javascript serialization dom deserialization rangy

我在使用 rangy 时遇到了一些问题。

我收到的错误是:

错误:Rangy Serializer 模块中的错误:deserializePosition() 失败:节点“没有索引为 3、5 的子节点”

当我从数据库中提取序列化突出显示并尝试将它们反序列化到网页上时,出现此错误。真正奇怪的是,大多数情况下,亮点被反序列化得很好并显示在页面上,但有时它们会随机消失,我会收到上述错误。

我使用了 chrome javascript 调试器来跟踪问题并

function deserializePosition(serialized, rootNode, doc) {
    if (!rootNode) {
        rootNode = (doc || document).documentElement;
    }
    var parts = serialized.split(":");
    var node = rootNode;
    var nodeIndices = parts[0] ? parts[0].split("/") : [], i = nodeIndices.length, nodeIndex;

    while (i--) {
        nodeIndex = parseInt(nodeIndices[i], 10);
        if (nodeIndex < node.childNodes.length) {
            node = node.childNodes[nodeIndex];
        } else {
            throw module.createError("deserializePosition() failed: node " + dom.inspectNode(node) +
                    " has no child with index " + nodeIndex + ", " + i);
        }
    }

    return new dom.DomPosition(node, parseInt(parts[1], 10));
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在此代码块中

var node = rootNode;
Run Code Online (Sandbox Code Playgroud)

即使 rootNode = html,有时也会为变量节点分配“文本”,这会导致 node.childNodes.length 等于 0 并引发错误。任何帮助将不胜感激,谢谢。