4

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

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

我尝试了重点,其他命令,没有任何效果:(。

4

5 回答 5

15

感谢您的帮助,但没有任何效果。我找到了自己的解决方案,我觉得有必要分享这个,因为我只发现了过时的解决方案,它不起作用:(。

解决方案:

在您的 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'); 
            }
于 2012-12-20T09:53:34.667 回答
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);
于 2012-12-13T11:06:08.517 回答
1

如果您在同一页面中有多个编辑器,您可以试试这个

tinymce.get('content_id').execCommand('mceInsertContent', false, 'content to be inserted');

于 2015-03-10T07:01:29.567 回答
0

这是一个DEMO在 IE9 中打开此链接

将光标放在文本区域中的所需位置,然后单击 tinyMCE 第三行中的最后一个图标(红色十字)。

希望能帮助到你!!:)

根据您的评论,单击tinymce 编辑器外部的按钮(单击我)。再次检查演示

于 2012-12-13T05:34:45.413 回答
0

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.

于 2013-01-08T14:23:13.783 回答