#tinymce
#tinymce
Вопрос:
Я работаю над продуктом с открытым исходным кодом, позволяющим совместное редактирование в CMS. Вариант использования следующий: пока пользователь A редактирует какой-то крошечный узел, пользователь B обновляет тот же узел. Все работает нормально, обновляя крошечный редактор пользователя, за исключением сохранения положения его курсора. Т.е.
var bookmark = editor.selection.getBookmark();
editor.setContent(content);
editor.selection.moveToBookmark(bookmark);
не будет работать, если содержимое было изменено до перемещения курсора.
http://tinymce.moxiecode.com/forum/viewtopic.php?id=20458 упоминается, что будет обновление для решения такого рода ситуаций, но могу ли я что-нибудь сделать сейчас?
Заранее благодарю вас!
Ответ №1:
Это может быть непростой задачей, но вот другой способ. Вы могли бы использовать формализованную закладку. Код будет выглядеть следующим образом
var bookmark = editor.selection.getBookmark(2, true);
editor.setContent(content);
editor.selection.moveToBookmark(bookmark);
Комментарии:
1. Это неудобно 🙂 Однако, похоже, у меня это не работает. Используя 2, после установки содержимого курсор устанавливается в начало узла. Использование 0 этого не делает, но все еще имеет проблему, когда содержимое изменяется перед курсором. Есть еще предложения?
2. можете ли вы предоставить дополнительную информацию о том, как работает ваш вариант использования? (как оба пользователя могут работать в одном редакторе, как и когда содержимое настраивается / обновляется aso …)
3. Спасибо за вашу настойчивость! Это довольно сложно объяснить: существует XMPP-приложение, которое запускается в то же время. Каждый раз, когда изменяется узел, создается исправление и отправляется другим пользователям. После получения их браузер сопоставит исправление с содержимым узла и применит его к узлу. Для случая крошечного узла это означает: Используйте getContent, примените исправление, setContent. Вы можете взглянуть (но это сложно) на github.com/ggozad/jarn.xmpp.collaboration/blob/master/jarn/xmpp /…
4. Существует также возможность вместо того, чтобы заниматься всей этой сложностью, добавить некоторый визуальный элемент для обозначения положения каждого пользователя в узле. Тогда установка курсора была бы вопросом установки закладки в этом элементе. Мысли?
5. о да, это выглядит несколько сложно. у меня была такая мысль: вы могли бы вставить специальный элемент или обычный элемент со специальным классом или что-то в редакторе в положение курсора (для этого есть команда editor), и при вызове setContent в редакторе других клиентов вы помещаете курсор туда ( удаляете этот узел)