Javascript:获取并保存数据库中的文本选择范围

时间:2013-08-15 16:04:34

标签: javascript range selection rangy

我正在为客户构建一个语法检查系统,用户可以在其中添加对给定文本的注释/建议。当用户选择某些文本时,会出现一个按钮,用于创建对该给定文本选择的注释/建议。当我想在数据库中保存文本选择范围以及注释/建议时,我的问题出现了。

我目前正在尝试使用Rangy(http://rangy.googlecode.com/)解决问题。

这些是我到目前为止所尝试的想法:

  • 使用rangy序列化程序序列化范围。这个问题 这种方法是DOM每次都在改变新的 评论/建议被添加,因此不允许 成功的反序列化。
  • 使用rangy选择包装并直接将其保存在 数据库,但与上面的想法一样,目标元素的内容是 改变每个评论/建议,这再次成为方法 不按预期工作。

任何关于如何解决这个问题的建议都会受到关注。

1 个答案:

答案 0 :(得分:3)

我没有使用过rangy。但这是我接近它的一种方式。

  1. 从元素(tutorial here

  2. 中获取所选文本
  3. 然后添加一个具有特定ID的包装器span。 (您可能希望从服务器获取唯一ID)

  4. 然后显示一个表单以输入评论。

  5. 在提交时,将范围ID和注释发送到服务器并将其存储在数据库中。

  6. 重新渲染时,您可以轻松地为此范围指定一个类来标记它并使用css显示悬停时的注释。

  7. 这将为您提供类似Google文档的系统,您可以在其中对文字进行评论。

  8. 如果有帮助,或者您需要有关如何完成各个步骤的更多解释,请告诉我。

    这样做的好处是您无需将所选文本发送回服务器或担心序列化。只是你包裹它的跨度的id。