web-dev-qa-db-ja.com

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

誰かがこれを解決する方法についてアイデアを持っているなら、私は非常に感謝します。

38
Ruba

コマンドmceInsertContentを使用する必要があります。 TinyMCEのドキュメント を参照してください。

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

上記の答えは良いですが、これを使用してHTMLを挿入できることを指摘する価値があります。

例えば:

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

現在のカーソル位置に太字のテキストを挿入します。

他の興味深い観察:

mceInsertRawHTML 私のバージョンのtinyMCEでは現在の行の先頭にカーソルを置く傾向がありますが、ymmvです。

mceReplaceContent 同様に機能しますが、私の場合、カーソルが現在のコンテンツの最後にあるときはうまく機能しませんでした。

繰り返しになりますが、詳細については ドキュメント を参照してください。

9
ajl

ポップアップウィンドウを使用する場合は、次を使用できます。

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ファイルにいる場合、同じ戦略を使用できます。たとえば、JavaScriptの代わりにPHPを使用します。

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