我想做什么:
- >向用户显示纯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调用,并从我的数据库中获取该页面用户的所有(序列化)选择并迭代它们并进行反序列化。任何帮助,都会非常感激。 谢谢。
答案 0 :(得分:0)
我认为你应该试试这个:
var selObj = rangy.getSelection();
var se = rangy.serializeSelection(selObj, true); //true to avoid DOM checksum