Range.deserializeSelection校验和错误?(Range.deserialize

2019-10-30 09:18发布

这是一个后续问题这个 。 我已经连载文本的选择iframe中,并且要恢复它,但它给我一个错误,“未捕获错误:deserializeRange:系列化范围根节点(XXXXX)和目标根节点的校验和(XXXXX)不匹配”

var iframe = $("iframe")[0];
var selection = rangy.getSelection(iframe);
var serializeSelection = rangy.serializeSelection(selection);
alert(serializeSelection);
rangy.deserializeSelection(serializeSelection);

演示: http://jsfiddle.net/codef0rmer/2d6Bk/1/

Answer 1:

您需要提供window对象作为第三个参数:

rangy.deserializeSelection(serializeSelection, null, iframe.contentWindow);

演示: http://jsfiddle.net/2d6Bk/2/

这更尴尬的比它应该是。 1.3版允许您使用iframe ,而不是iframe.contentWindow ,但它仍然过于不可读的,所以我会改善这种莫名其妙。



Answer 2:

关于“未捕获错误:deserializeRange:串行化的范围根节点(XXXXX)和目标根节点(XXXXX)的校验和不匹配”错误:

瘦长序列化和反序列化应该做相同的格式和类型的文本。 有时反序列化的文字或格式或CSS可能会改变。 所以,你必须把你的文字的照顾。 作为您使用的iframe,您的文本已在iframe加载后调用的方法一次。 我们所做的错误是我们序列化的文本页面加载后和反序列化,我们尝试反序列化的iframe装载后的文本。 只是检查你开始之前,反序列化的iframe中是否装载有内容或没有。



文章来源: Range.deserializeSelection checksum error?