gpt4 book ai didi

javascript - 使用 Rangy 从数据库恢复多个选择

转载 作者:行者123 更新时间:2023-11-28 09:25:54 27 4
gpt4 key购买 nike

我想做什么:

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

我做了什么:

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

问题:

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

checksums of serialized range root node (ec0c8cf0) and target root node (d4997863) do not match

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

创建了一个 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}');

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

额外:

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

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

任何帮助,我们将不胜感激。谢谢。

最佳答案

我认为你应该尝试这个:

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

关于javascript - 使用 Rangy 从数据库恢复多个选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com