2011-04-27 48 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

相關問題