В дополнение к тому, что ответил uadrive:
insertAtCaret
не будет работать ни с одним редактором в реальном времени, потому что все они используют контентно-редактируемый iframe. Лежащая в основе Teaxtarea (или другой HTML-элемент) скрывается при инициализации.
uadrive прав, вам придется добавить обработчики к этому iframe, чтобы выполнять какие-либо действия, когда вам это нужно. Если вы используете параметр конфигурации tinymce «paste_block_drop», вы не сможете выполнять какие-либо действия перетаскивания, потому что, если вы установите для этого параметра значение true, все события перетаскивания будут заблокированы.
Чтобы вставить код в позицию каретки в tinymce, используйте команду:
tinyMCE.execCommand('mceInsertContent', false, 'my new content to be added');
Вот некоторый код для игры (это действие, которое я делаю при перетаскивании в редакторе, я реконструирую вставленный контент, а затем, в соответствии с моими потребностями, добавляю/фильтрую его и вставляю обратно в редактор).
setup : function(ed)
{
ed.onInit.add(function(ed){
$(ed.getDoc()).bind('drop', function(event){
ed.content_pre = ed.getContent();
ed.drag_content_html = event.originalEvent.dataTransfer.getData('text/html');
ed.drag_content_plain1 = event.originalEvent.dataTransfer.getData('text/plain');
//console.log('x', ed.content_pre, ed);
tinymce.activeEditor = ed;
setTimeout(function(){
var ed = tinymce.activeEditor;
var content_post = ed.getContent();
var diff_front = 0;
for (var i=0; i < ed.content_pre.length; i++) {
if (ed.content_pre.charCodeAt(i) !== content_post.charCodeAt(i)) {
diff_front = i;
break;
}
}
if (ed.content_pre.substr(diff_front-2, 2) == '<p') diff_front -= 2;
if (ed.content_pre.substr(diff_front-1, 1) == '<') diff_front -= 1;
ed.setContent( ed.content_pre.substr(0, diff_front) + ed.drag_content_plain1 + ed.content_pre.substr(diff_front) );
},0);
});
});
},
person
Thariama
schedule
14.11.2011
not in a form we want for the system
? - person simshaun   schedule 12.11.2011