現在の位置にあるtinyMceedtitorにテキストを挿入する方法。Chrome、FF、Safariでは完璧に機能しますが、IEでは常にテキストエリアの上部から始まります。私は現在、次のことを行っています。
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
私はフォーカス、他のコマンドで試しましたが、何も機能しません:(。
現在の位置にあるtinyMceedtitorにテキストを挿入する方法。Chrome、FF、Safariでは完璧に機能しますが、IEでは常にテキストエリアの上部から始まります。私は現在、次のことを行っています。
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
私はフォーカス、他のコマンドで試しましたが、何も機能しません:(。
助けてくれてありがとう、でも何もうまくいかなかった。私は自分自身の解決策を見つけました、そして私はこれを共有する必要があると感じました、なぜなら私は古い解決策しか見つけられなかったので、それはうまくいきませんでした:(。
ソリューション:
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');
}
このアプローチを使用して、問題を解決できます。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);
同じページに複数のエディターがある場合は、これを試すことができます
tinymce.get('content_id').execCommand('mceInsertContent', false, 'content to be inserted');
しばらく前に同じ問題が発生しました。モーダルポップアップを使用するプラグインがあり、上記と同じ方法を使用しています。:
tinyMCE.execCommand('mceInsertContent',false, 'blabla this is tekst');
IE9では、テキストが上部に挿入されます。カレットで遊ぶ際の問題は、私の場合、特定の奇妙なことが起こった(バックスペースの削除が壊れた)ことです。そこで、使用しているtinyMCEディストリビューションに埋め込まれたスマイリープラグインのコードを確認しました。私が見つけた解決策は、代わりに次のようにTinyMCEPopupオブジェクトを使用することでした。
tinyMCEPopup.execCommand('mceInsertContent', false, 'blabla this is tekst');
よろしく。