0

这是this的后续问题。我已经序列化了 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/

4

2 回答 2

1

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

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

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

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

于 2012-07-22T17:26:42.800 回答
0

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

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

于 2014-05-28T03:43:50.453 回答