Вставка текста в Редактор TinyMCE, где находится курсор

Я пытался вставить текст в Редактор 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;
}

Если кто-нибудь имеет представление о том, как решить эту я буду очень благодарен.

3 ответов


вы должны использовать команду mceInsertContent. Вижу документация TinyMCE.

tinymce.activeEditor.execCommand('mceInsertContent', false, "some text");

приведенный выше ответ хорош, но стоит отметить, что его можно использовать для вставки любого HTML.

например:

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

вставить выделенный текст в текущей позиции курсора.

некоторые другие интересные наблюдения:

mceInsertRawHTML также работает, но имеет тенденцию ставить курсор в начале текущей строки в моей версии tinyMCE, но ymmv.

mceReplaceContent работает также, но в моем случае не работал хорошо, когда курсор находился в конце текущего содержимого.

еще раз, см. документация для получения дополнительной информации.


при использовании всплывающего окна, вы можете использовать:

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>