2011-04-27 47 views
6

我正在开发一款开源产品,以允许在CMS中进行协作编辑。用例如下: 当用户A正在编辑某个小节点时,用户B会更新同一个节点。一切工作正常更新用户的一个微小的编辑器,除了保留他的光标位置。即如果内容已插入符之前改变在使用setContent时尽量保留插入符号/书签位置

var bookmark = editor.selection.getBookmark(); 
editor.setContent(content); 
editor.selection.moveToBookmark(bookmark); 

将无法​​正常工作。 http://tinymce.moxiecode.com/forum/viewtopic.php?id=20458提到将会有一个更新来处理这种情况,但我现在可以做些什么吗? 提前谢谢!

回答

7

这可能是一个模糊的事情来实现,但这里是一个另类的方法。 你可以使用一个形式化的书签。该代码将看起来像

var bookmark = editor.selection.getBookmark(2, true); 
editor.setContent(content); 
editor.selection.moveToBookmark(bookmark); 
+0

摸索它是:)但上述似乎并没有为我工作。使用2,在设置内容之后,将光标设置为节点的开头。使用0不会,但内容在光标前改变时仍然存在问题。还有什么建议? – ggozad 2011-04-28 09:11:47

+0

你可以提供一些关于你的用例如何工作的更多信息吗? (这两个用户如何在相同的编辑器上工作,如何以及何时将内容设置/更新为aso ...) – Thariama 2011-04-28 09:15:18

+0

谢谢你的坚持!这很难解释:有一个XMPP应用程序在同一时间运行。每次节点更改时,都会创建一个补丁并将其发送给其他用户。一旦收到,他们的浏览器将把补丁与节点的内容匹配并将其应用到节点。对于小型节点的情况,意思是:使用getContent,应用补丁setContent。你可以在https://github.com/ggozad/jarn.xmpp.collaboration/blob/master/jarn/xmpp/collaboration/browser/js/collaborate.colors.js看看(但它很复杂) – ggozad 2011-04-28 09:29:32

相关问题