这是一个后续问题这个 。 我已经连载文本的选择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/
您需要提供window对象作为第三个参数:
rangy.deserializeSelection(serializeSelection, null, iframe.contentWindow);
演示: http://jsfiddle.net/2d6Bk/2/
这更尴尬的比它应该是。 1.3版允许您使用iframe
,而不是iframe.contentWindow
,但它仍然过于不可读的,所以我会改善这种莫名其妙。
关于“未捕获错误:deserializeRange:串行化的范围根节点(XXXXX)和目标根节点(XXXXX)的校验和不匹配”错误:
瘦长序列化和反序列化应该做相同的格式和类型的文本。 有时反序列化的文字或格式或CSS可能会改变。 所以,你必须把你的文字的照顾。 作为您使用的iframe,您的文本已在iframe加载后调用的方法一次。 我们所做的错误是我们序列化的文本页面加载后和反序列化,我们尝试反序列化的iframe装载后的文本。 只是检查你开始之前,反序列化的iframe中是否装载有内容或没有。