Javascript,文本注释和想法

时间:2011-07-01 18:29:24

标签: javascript user-interface annotations document text-parsing

我很好奇听到其他人就我一直在考虑的问题提出的意见。

基本上我想向用户提供一个文本文档,并允许他/她选择文本并对其进行注释。具体到注释我的目标是实现以下目标:

  1. 允许用户进行文本选择,对其进行注释,然后保存选择和注释以供日后参考
  2. (UI)表示重叠注释的支持。例如,如果字符串:“这是我的示例测试句子的测试句子”,则user1可能有一个注释“是我的例子的测试句子”,而user2可能有一个注释“for my example”。
  3. 说明文档文本更改的情况。如果可能,将更新注释。
  4. 您如何从技术角度解决这个问题?

    我的一些想法是:

    • 使用javascript范围并将注释存储为一对整数,例如:(document_start_char,document_end_char)。将此对保存在数据库中。
    • 或者,使用JS获取所选文本并实际保存db中的全文。 (不知道我将如何重叠注释)
    • 通过应用css样式突出显示文本然后使注释的“堆叠”变暗,从而表示重叠的注释。最小的注释总是必须位于“堆栈”的顶部。

    您有什么想法或改进方面? heck 如何支持文档的文本更新而不会破坏所有注释?

2 个答案:

答案 0 :(得分:5)

我正在研究同样的问题,我个人赞成不要自己动手,而是支持像Annotator这样的现有开源库。

答案 1 :(得分:3)

http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html

http://mark.koli.ch/2009/09/05/get-selected-text-javascript.html

获取所选文本非常简单。存储它(或其起点/终点)也是一个笑话。但是你的第3点呢?如果文字改变怎么办?

如果文本更改,则原始文本和您存储的原始选择坐标将不等于当前修改的文本。您应该知道文本文档中存在的注释,以便每次更改时,应更新或删除引用该特定更改文本的注释(可能在文本之前和之后的快速比较之后:单词缺失?或者只是某些单词已得到纠正?),但这似乎真的是一项艰难的任务。

我认为将整个文本注释存储在数据库中是必不可少的,以避免它被更改并且注释丢失。这样您仍然可以获得注释的完整文本。然后你还应该使用一种标志来指示注释的开始字符,如果文本发生了变化,你可以计算出更改前文档文本中的字符差异,以及后面的文本文本中的字符差异,并找到这种方式原始注释的新起点(假设文档文本的注释部分未更改)。

将文本文档分成尽可能多的段落也应该有所帮助,这样您就可以将文档的不同部分分开并逐个处理。

现在我真的很想看到它完成! :)