web-dev-qa-db-fra.com

Insérer du texte dans l'éditeur TinyMCE à l'emplacement du curseur

J'ai essayé d'insérer du texte dans l'éditeur TinyMCE au niveau de l'élément de paragraphe ciblé (<p>) exactement à l'endroit où se trouve le curseur, mais sans succès !!

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

Si quelqu'un a une idée sur la façon de résoudre ce problème, je serai très reconnaissant.

37
Ruba

Vous devez utiliser la commande mceInsertContent. Voir la Documentation TinyMCE .

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

La réponse ci-dessus est bonne, mais il convient de souligner que cela peut être utilisé pour insérer du code HTML.

Par exemple:

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

insérera du texte en gras à l’emplacement actuel du curseur. 

Quelques autres observations intéressantes:

mceInsertRawHTML fonctionne également, mais a tendance à placer le curseur au début de la ligne courante dans ma version de tinyMCE, mais ymmv. 

mceReplaceContent fonctionne également, mais dans mon cas, cela ne fonctionnait pas bien lorsque le curseur se trouvait à la fin du contenu actuel.

Encore une fois, voir la documentation pour plus d’informations.

9
ajl

Si vous utilisez une fenêtre popup, vous pouvez utiliser: 

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

// mceInsertLink insère le contenu à la position actuelle du curseur ou du curseur. // Si l'éditeur n'est pas actif, l'insertion se fera à la toute première ligne du contenu de l'éditeur.

Si vous souhaitez insérer des balises HTML et des variables javascript, vous pouvez utiliser, par exemple: 

<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>

Si vous êtes dans un fichier PHP, vous pouvez utiliser la même stratégie, utilisez simplement PHP au lieu de JavaScript, par exemple:

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

Vous pouvez également affecter des variables PHP (en supposant que vous soyez dans un fichier .php) aux variables Javascript et les utiliser dans l'insertion de contenu de l'éditeur, par exemple: 

<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>
1
Miloud Eloumri