2010-04-01 99 views
0

对于一个主要的学校项目,我正在实施一个实时协作编辑器。对于一个小背景,基本上这意味着两个(或更多)用户可以同时键入到文档中,并且它们的更改会自动传播到另一个(类似于Etherpad)。现在检测HTML文本框中发生了什么变化

我的问题如下:

我希望能够检测到什么样的变化进行到一个HTML文本字段的用户。他们可以:

  • 插入字符
  • 删除字符
  • 粘贴字符的字符串
  • 切字符

的字符串,我希望能够以检测这些发生了变化,然后通知其他客户类似于“在位置2插入字符'c'”等。

无论如何,我是一跳以便就如何执行这些更改的检测获得一些建议?

我的第一次尝试是在发生变化之前和之后考虑Carot位置,但是这失败了。

对于我的第二次尝试,我正在考虑对textfields的全部内容进行新旧值的比较。我是否错过了这个解决方案的明显之处?有更简单的东西吗?

回答

0

我的伪代码/写出的响应将是(如果我明白你的问题)使用jQuery检测键入事件,然后通过ajax保存输入到服务器,然后也采取响应并将其发回输入。这不是非常有效,但基本上这个想法是,你不断发布并检查发布的内容。如果你想查看别人正在做什么,你可以每秒钟ping一次服务器,并用响应进行更新。

所有这些当然可以优化,但它仍然是一种服务器征税。你也可以看到,如果你能实现 谷歌 托皮卡波为您的项目,或与我们联系与 谷歌 托皮卡,看看他们是如何做到这一点:)

+0

这是我原来的做法。它可以检测击键情况,但检测不到其他更改,如剪切和粘贴。 – 2010-04-01 19:13:38

+0

我也在考虑这个解决方案,但是如果两个客户端在服务器确认客户端发生变化之前改变了某些东西,情况会发生竞争吗? 至于剪切和粘贴,http://stackoverflow.com/questions/686995/jquery-catch-paste-input – 2010-04-01 20:09:56

1

这是一个很艰难的工作,使这一工作的今天,对于几个原因,但

一个个人注释:检测单词,字符的变化可能是完全无感和不可用的,检测代替几段变化,或者在一个类似Excel工作表,该单细胞

我的情况下希望这可以帮助

请随时纠正我的英语!