如何在当前位置将文本插入tinyMce edtitor。 它在Chrome,FF,Safari中运行完美,但在IE中它总是从textarea的顶部开始。 我目前正在执行以下操作:
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
我尝试了焦点,其他命令,没有任何作用:(。
答案 0 :(得分:14)
感谢您的帮助,但没有任何效果。我找到了自己的解决方案,我觉得分享这个是必要的,因为我只发现过时的解决方案,但是没有用:(。
解决方案:
在你的TinyMCE init中添加以下代码:
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();
});
}
where" 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');
}
答案 1 :(得分:1)
您可以使用此方法来解决您的问题。初始化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);
答案 2 :(得分:1)
如果您在同一页面中有多个编辑器,则可以尝试使用
tinymce.get('content_id').execCommand('mceInsertContent', false, 'content to be inserted');

答案 3 :(得分:0)
这是DEMO在IE9中打开此链接
将光标放在textarea中的所需位置,然后单击tinyMCE中第三行的最后一个图标(红叉)。
希望它有所帮助!! :)
根据您的评论,点击tinymce编辑器外面的按钮(Click Me)。 再次检查DEMO。
答案 4 :(得分:0)
前段时间我有同样的问题,我有一个使用模态弹出窗口的插件,也使用上面描述的相同方法。 :
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
在IE9中,文本插入顶部。使用插入符号的问题在于,在我的情况下,发生了某些奇怪的事情(退格删除中断),因此我检查了嵌入在我正在使用的tinyMCE发行版中的表情符号插件的代码。我找到的解决方案是使用TinyMCEPopup对象,如下所示:
tinyMCEPopup.execCommand('mceInsertContent', false, 'blabla this is tekst');
问候。