3

現在のカーソル位置にコンテンツを挿入するか、TinyMCEエディターインスタンスで選択したコンテンツを置き換えようとしています。私はこれを使用しています:

tinyMCEPopup.editor.selection.setContent(content);

content挿入したいHTMLの文字列はどこにありますか。

Firefox、Opera、Chromeでうまく機能しますが、IEでは機能しません。代わりに、選択範囲ではなく、エディターの先頭にコンテンツを挿入します。私も試しました:

tinyMCEPopup.execCommand('mceInsertContent', false, content);

繰り返しますが、IEでも同じ動作です。特殊文字を挿入するためのTinyMCEコードは、上記の関数を使用して機能します。プラグインで複製しようとしましたが、それでも喜びはありません...

function insertChar(chr) {
    tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');

    // Refocus in window
    if (tinyMCEPopup.isWindow)
        window.focus();

    tinyMCEPopup.editor.focus();
    tinyMCEPopup.close();
}

更新

まだIEで動作していませんが、Operaは私のプラグインのボタンをツールバーに表示しません(これはおそらく別の問題ですが)!jQueryプラグインも試し、エディターをロードしましたが、これを使用してもmceInsertContentメソッドを呼び出すことができませんでした。

$('#my-editor-id').tinymce().execCommand('mceInsertContent', false, content);

エラーが発生しました:「オブジェクトにはメソッドがありません:tinymce」-ポップアップから呼び出すことができない可能性がありますか?!

4

3 に答える 3

4

電話してみましたか:

tinyMCEPopup.restoreSelection(); 

電話する前に

tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
于 2012-11-06T22:04:22.620 に答える
3

問題は、エディターの外側のボタンやリンクなどをクリックすると、TinyMCE が現在のカーソル位置を失い、フォーカスが失われることです。
この問題を解決するには、ボタンまたはリンクの mousedown イベントを使用します。そうすれば、フォーカスが失われる前に挿入アクションを実行できます。

$("#insert_link").mousedown(function (e) {
    var editor = tinyMCE.get("editor");
    editor.execCommand('mceInsertContent', false, "Insert Value");
    e.preventDefault();
});
于 2013-05-14T06:41:58.007 に答える