4

現在の位置にあるtinyMceedtitorにテキストを挿入する方法。Chrome、FF、Safariでは完璧に機能しますが、IEでは常にテキストエリアの上部から始まります。私は現在、次のことを行っています。

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

私はフォーカス、他のコマンドで試しましたが、何も機能しません:(。

4

5 に答える 5

15

助けてくれてありがとう、でも何もうまくいかなかった。私は自分自身の解決策を見つけました、そして私はこれを共有する必要があると感じました、なぜなら私は古い解決策しか見つけられなかったので、それはうまくいきませんでした:(。

ソリューション:

TinyMCE initに、次のコードを追加します。

    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を初期化するときは、セットアップパラメータを次のように設定します(内部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コマンドを使用して新しいコンテンツを挿入する直前に、tinymcecaretの位置をリセットする必要があります。

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

これがデモですIE9でこのリンクを開く

テキストエリアの目的の場所にカーソルを置き、tinyMCEの3行目の最後のアイコン(赤十字)をクリックします。

それが役に立てば幸い!!:)

コメントに従って、tinymceエディターの外側にあるボタン(Click Me)をクリックします。デモをもう一度確認してください。

于 2012-12-13T05:34:45.413 に答える
0

しばらく前に同じ問題が発生しました。モーダルポップアップを使用するプラグインがあり、上記と同じ方法を使用しています。:

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

IE9では、テキストが上部に挿入されます。カレットで遊ぶ際の問題は、私の場合、特定の奇妙なことが起こった(バックスペースの削除が壊れた)ことです。そこで、使用しているtinyMCEディストリビューションに埋め込まれたスマイリープラグインのコードを確認しました。私が見つけた解決策は、代わりに次のようにTinyMCEPopupオブジェクトを使用することでした。

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

よろしく。

于 2013-01-08T14:23:13.783 に答える