如何在大文本字段中记录更改?

时间:2011-03-10 07:07:49

标签: javascript jquery ruby ajax ruby-on-rails-3

假设我希望用户在20分钟内写一个故事。用户完成后我想回放故事编写过程,这样我就可以看到用户如何去做。我该怎么做?显然,我不想看它的每一秒,但我希望看到每当“大变化”时的快照。 “大变化”应该由我来定义。它可以是X量的字符添加或减少。

我想过以某种方式试图连续监视文本框中的更改,然后每次出现“大变化”时将文本作为字符串存储在数组中。然后重播这个,我将播放1秒延迟的字符串数组。

有人想过更好的方法来做这件事或知道一个有用的图书馆吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

让我们理所当然地认为你有能力坚持这种状态,只是看看检测和显示差异的挑战。你问题最具挑战性的方面是定义并随后检测你所谓的“大变化”。如果我们暂时搁置一下,我认为有两种方法可以解决这个问题:

1)运营转型 - (http://en.wikipedia.org/wiki/Operational_transformation)

Google Docs(以太网)用于跨多个浏览器同步实时协作编辑。使用OT,您几乎可以重新创建对文档所做更改的视频。您可以在thinklinkr.com修订历史中看到这一点(完全披露 - 我是其中一位创始人)。

2)差异匹配路径 - (http://code.google.com/p/google-diff-match-patch/)

这实际上是一组三种算法,可用于有效地创建和解决文本文档之间的差异。我认为这可能是一个更好的匹配,因为您需要关于分块差异。