Range.deserializeSelection校验和错误?

时间:2012-07-20 19:52:50

标签: javascript rangy

这是this的后续问题。我已经序列化了iframe中的文本选择并希望恢复它,但它给了我一个错误,“未捕获错误:deserializeRange:序列化范围根节点(XXXXX)和目标根节点(XXXXX)的校验和不匹配”< / p>

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/

2 个答案:

答案 0 :(得分:1)

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

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

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

这比应该更加尴尬。版本1.3允许您使用iframe而不是iframe.contentWindow,但它仍然太难以理解,所以我会以某种方式改进它。

答案 1 :(得分:0)

关于&#34;未捕获错误:deserializeRange:序列化范围根节点(XXXXX)和目标根节点(XXXXX)的校验和不匹配&#34;错误:

应该对相同的格式和类型文本进行Rangy序列化和反序列化。有时反序列化时文本或格式或css可能会发生变化。所以你必须照顾你的文字。在使用iframe时,请在iframe中加载文本后调用方法一次。我们所做的错误是我们在页面加载后序列化文本,在反序列化时,我们尝试在iframe加载后反序列化文本。在开始反序列化之前,只需检查iframe是否加载了内容。