43

我一直在尝试将文本插入到 TinyMCE 编辑器的焦点段落元素 ( <p>) 中光标所在的位置,但没有成功!!

var elem = tinyMCE.activeEditor.dom.get('tinymce');
var child = elem.firstChild;
while (child) {
    if (child.focused) {
        $(child).insertAtCaret("some text");
    }
    child = child.nextSibling;
}

如果有人对如何解决这个问题有任何想法,我将非常感激。

4

4 回答 4

100

你应该使用命令mceInsertContent。请参阅TinyMCE 文档

tinymce.activeEditor.execCommand('mceInsertContent', false, "some text");
于 2012-11-15T08:38:40.470 回答
11

上面的答案很好,但值得指出的是,这可以用来插入任何 HTML。

例如:

tinymce.activeEditor.execCommand('mceInsertContent', false, " <b>bolded text</b> ");

将在当前光标位置插入粗体文本。

其他一些有趣的观察:

mceInsertRawHTML也可以,但在我的 tinyMCE 版本中倾向于将光标放在当前行的开头,但是 ymmv。

mceReplaceContent也可以,但在我的情况下,当光标位于当前内容的末尾时效果不佳。

同样,请参阅文档以获取更多信息。

于 2014-05-02T20:15:15.803 回答
1

如果使用弹出窗口,您可以使用:

tinyMCEPopup.editor.execCommand('mceInsertLink', false, 'some content goes here');

// mceInsertLink 在当前光标或插入符号位置插入内容。// 如果编辑器不在焦点上,插入将在编辑器的第一行内容处。

如果要插入 HTML 标记和 javascript 变量,可以使用,例如:

<script type='text/javascript'>

    var my_var= "some value";
    var my_var_two = 99;

    tinyMCEPopup.editor.execCommand('mceInsertLink', false, 
                    '<span >[' + my_var + ', ' + my_var_two + ']</span>');       
    tinyMCEPopup.close(); // too close the popup window

</script>

如果你在一个 PHP 文件中,你可以使用相同的策略,只是使用 PHP 而不是 JavaScript,例如:

<script type='text/javascript'>
    tinyMCEPopup.editor.execCommand('mceInsertContent', false, 
               '<span >[' + <?php echo $my_php_var; ?> +']</span>'); 
</script>

您还可以将 PHP 变量(假设您在 .php 文件中)分配给 Javascript 变量并在编辑器内容插入中使用它们,例如:

<script type='text/javascript'>

    var my_var= "<?php echo $my_php_var; ?>";
    var my_var_two = "<?php echo $my_php_var_two_or_a_function_call; ?>";

    tinyMCEPopup.editor.execCommand('mceInsertLink', false, 
                     '<span >[' + my_var + ', ' + my_var_two + ']</span>');       
    tinyMCEPopup.close(); // too close the popup window

</script>
于 2018-08-12T22:49:19.713 回答
0

如果您的页面上有多个编辑器,我想在这里再添加一件事,而您也可以这样做。

tinyMCE.get('idOfEditor').execCommand('mceInsertContent', true, 'your text goes here')
于 2020-01-03T17:52:54.400 回答