使用Rangy从db恢复多个选择

时间:2013-01-19 16:50:22

标签: javascript jquery ajax rangy

我想做什么:

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

我做了什么:

我使用了Library/API : Rangy。通过这个iam能够选择文本并用用户首选颜色突出显示它。

问题:

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

  

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

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

创建了一个JS-Fiddle demo / 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调用,并从我的数据库中获取该页面用户的所有(序列化)选择并迭代它们并进行反序列化。

任何帮助,都会非常感激。 谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你应该试试这个:

var selObj = rangy.getSelection();
var se = rangy.serializeSelection(selObj, true); //true to avoid DOM checksum