如何在当前位置将文本插入到 tinyMce 编辑器中。它在 Chrome、FF、Safari 中完美运行,但在 IE 中它总是从 textarea 的顶部开始。我目前执行以下操作:
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
我尝试了重点,其他命令,没有任何效果:(。
如何在当前位置将文本插入到 tinyMce 编辑器中。它在 Chrome、FF、Safari 中完美运行,但在 IE 中它总是从 textarea 的顶部开始。我目前执行以下操作:
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
我尝试了重点,其他命令,没有任何效果:(。
感谢您的帮助,但没有任何效果。我找到了自己的解决方案,我觉得有必要分享这个,因为我只发现了过时的解决方案,它不起作用:(。
解决方案:
在您的 TinyMCE 初始化中添加以下代码:
tinyMCE.init({
// General options
elements: elementid,
setup: function (ed) {
ed.onKeyUp.add(function (ed, e) {
actualCaretPositionBookmark = tinyMCE.activeEditor.selection.getBookmark();
});
ed.onClick.add(function (ed, e) {
actualCaretPositionBookmark = tinyMCE.activeEditor.selection.getBookmark();
});
}
其中“actualCaretPositionBookmark”是javascript中的一个全局变量,您的所有javascript代码都可以访问它
然后,当您想通过 javascript 将文本添加到 TinyMCE 编辑器时,添加以下代码:
if (tinymce.isIE) {
tinyMCE.activeEditor.selection.moveToBookmark(actualCaretPositionBookmark);
tinyMCE.execCommand('mceInsertContent',false, 'My new text');
}else {
tinyMCE.execCommand('insertHTML',false, 'My new text');
}
您可以使用这种方法来解决您的问题。初始化 tinymce 时,将 setup 参数设置为以下(内部tinyMCE.init({...})
...
theme: "advanced", // example param
plugins = 'code', // example param
setup : function(ed) {
ed.onInit.add(function(ed, evt) {
var dom = ed.dom;
var doc = ed.getDoc();
tinymce.dom.Event.add(doc, 'blur', function(e) {
// onBlur you save your caret position
actual_caret_position_bookmark = tinymce.get('your_editor_id').selection.getBookmark(2, true);
});
});
},
cleanup: true, // example param
...
现在,您需要在使用 mceInsertContent 命令插入新内容之前重置 tinymce 插入符号位置:
tinymce.get('your_editor_id').selection.moveToBookmark(actual_caret_position_bookmark);
如果您在同一页面中有多个编辑器,您可以试试这个
tinymce.get('content_id').execCommand('mceInsertContent', false, 'content to be inserted');
I have the same issue some while ago, I have a plugin using a modal popup and also use the same method described above. :
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
In IE9 the text is inserted in the top. The problem with playing with the caret is that, in my case, certain strange things happened (The backspace delete breaks), so I checked the code for the smileys plugin embedded inside the tinyMCE distribution that I'm using. the solution I found was to use the TinyMCEPopup object instead, like this:
tinyMCEPopup.execCommand('mceInsertContent', false, 'blabla this is tekst');
Regards.