1

我想做的事 :

-> 向用户显示纯 HTML 页面 -> 用户能够突出显示该页面上的文本-> 当用户下次登录时,我应该能够检索并在页面上显示他之前的(多个)突出显示。

我做了什么 :

我使用了库/API:Rangy。有了这个我可以选择文本并用用户喜欢的颜色突出显示它。

问题 :

我尝试了序列化和反序列化功能,但是当我尝试反序列化(重新加载页面后)它给我一个错误说

序列化范围根节点 (ec0c8cf0) 和目标根节点 (d4997863) 的校验和不匹配

每次我重新加载页面时,都会有一个新的根节点,在这种情况下我该如何修复反序列化?

创建了一个 JS-Fiddledemo / js-fiddle

这是什么 - 如果你查看我的演示,我选择描述的第一个词,即“请”,我得到突出显示的文本,我也得到序列为:

0/3/1/3/0/1/1/2:9,0/3/1/3/0/1/1/2:9{b3002d92}

所以我所做的是,我对这个序列进行了硬编码,并将其放入页面 onLoad 函数中的 deserializeSelection 函数中,如下所示:-

rangy.deserializeSelection('0/3/1/3/0/1/1/2:9,0/3/1/3/0/1/1/2:9{b3002d92}');

所以从技术上讲,它应该在描述中突出显示“请”,无论何时加载页面,但它没有,而是在块中给我上述错误。你能帮我解决这个问题吗?请。谢谢

额外的:

1.我真的不明白rangy的序列化和反序列化方法。

2.我从这里开始的非常抽象的路线图是,在页面加载时执行 AJAX 调用,并从我的数据库中获取此页面的所有(序列化)用户选择,然后遍历它们并进行反序列化。

任何帮助将非常感激。谢谢你。

4

1 回答 1

0

我认为你应该试试这个:

var selObj = rangy.getSelection();
var se = rangy.serializeSelection(selObj, true); //true to avoid DOM checksum
于 2013-01-22T04:14:13.500 回答