Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript、文本注释和想法_Javascript_User Interface_Annotations_Document_Text Parsing - Fatal编程技术网

Javascript、文本注释和想法

Javascript、文本注释和想法,javascript,user-interface,annotations,document,text-parsing,Javascript,User Interface,Annotations,Document,Text Parsing,我很想听到别人对我思考了一段时间的问题的意见 本质上,我想向用户展示一个文本文档,允许他/她选择文本并对其进行注释。针对注释,我旨在实现以下目标: 允许用户进行文本选择,对其进行注释,然后保存选择和注释以供以后参考 (UI)支持表示重叠注释。例如,如果字符串中有:“这是我的示例测试句子的测试句子”,则user1可能在“是我的示例的测试句子”上有注释,user2可能在“我的示例”上有注释 说明文档文本发生更改的情况。如果可能,将更新注释 您将如何从技术角度解决这一问题 我的一些想法是: 使用ja

我很想听到别人对我思考了一段时间的问题的意见

本质上,我想向用户展示一个文本文档,允许他/她选择文本并对其进行注释。针对注释,我旨在实现以下目标:

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

    我的一些想法是:

    • 使用javascript范围并将注释存储为一对整数,例如:(document\u start\u char,document\u end\u char)。将此对保存在数据库中
    • 或者,使用JS选择文本并将全文保存在db中。(不确定我将如何进行重叠注释)
    • 通过应用css样式高亮显示文本,然后将重叠的注释“堆栈”变暗,来表示重叠的注释。最小的注释必须始终位于“堆栈”的顶部
    你有什么想法或需要改进的地方?我怎么能在不破坏所有注释的情况下支持文档文本的更新呢

    获取所选文本非常容易。存储它(或它的起点/终点)也是一个笑话。但是你的第三点呢?如果文本发生变化怎么办

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

    我认为在数据库中存储整个文本注释是必要的,以避免它被更改和注释丢失。这样,您仍将拥有注释的完整文本。然后,您还应该使用一种标志来指示注释的起始字符,如果文本发生更改,您可以计算更改前文档文本和更改后文档文本的字符差异,并通过这种方式找到原始注释的新起始点(假设文档文本的注释部分没有更改)

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


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

    我正在研究同一个问题,就我个人而言,我不喜欢使用我自己的,而喜欢使用现有的开源库,比如。

    后续问题——nosql db是否是存储文本的有益选择(反复)?我有完全相同的要求。请让我们随时了解您的进度。目前,我所做的工作是使用唯一的ID围绕一个跨度中的每个字符。我使用Rangy()获取选择,然后提取ID,以便准确知道选择了哪些字符。这样做可以给我一些自由,因为我有重叠的选择,可以在幕后做一些有趣的事情,比如计算一个角色在一组注释中被注释了多少次,并相应地调整它的背景色(以表示重叠的选择)。哦,我忘了一件事。。。我还没有弄清楚当文档本身被编辑时如何处理更新所有注释,但是我认为一个很好的方法可能是将文档分成独特的段落、句子或类似的东西。在这种情况下,隔离伤害将是目标,但这并不完美。这太神奇了。非常感谢。