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

时间:2015-06-30 23:18:03

标签: javascript dom serialization 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));
}

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

var node = rootNode;

即使rootNode = html,变量节点有时会被赋予“text”,这会导致node.childNodes.length等于0并抛出错误。非常感谢任何帮助,谢谢。

0 个答案:

没有答案