在当前位置TINYMCE IE9处插入文本

时间:2012-12-12 21:38:46

标签: tinymce internet-explorer-9

如何在当前位置将文本插入tinyMce edtitor。 它在Chrome,FF,Safari中运行完美,但在IE中它总是从textarea的顶部开始。 我目前正在执行以下操作:

tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');

我尝试了焦点,其他命令,没有任何作用:(。

5 个答案:

答案 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');

问候。