2009-12-10 13 views
10

で選択したテキストをラップボタンを追加する方法:テキスト・人気アニメでTinyMCEは - 私は現在のTinyMCEを使用していますし、次のように動作カスタムボタンを追加したいタグ

  1. ユーザーのハイライトテキスト
  2. ユーザーはカスタムボタンX
  3. テキスト(犬の散歩)タグ(犬の散歩)でラップされ

これを行うことができる場合は上の任意のアイデアをクリック?

// Add a custom button 
ed.addButton('mybutton', { 
    title : 'My button', 
    'class' : 'MyCoolBtn', 
    image : 'MyCoolBtn.png', 
    onclick : function() { 
     // Add you own code to execute something on click 
     ed.focus(); 
     ed.selection.setContent('<strong>Hello world!</strong>'); 
    } 
}); 

感謝:私はカスタムボタンは、テキストを挿入しますが、テキストを折り返すない方法を考え出した...ここでは、現在のコードです!これを達成するための

答えて

27
ed.addButton('mybutton', { 
    title: 'My button', 
    class: 'MyCoolBtn', 
    image: 'MyCoolBtn.png', 
    onclick: function() { 
    // Add your own code to execute something on click 
    ed.focus(); 
    ed.selection.setContent('<tag>' + ed.selection.getContent() + '</tag>'); 
    } 
}); 
+0

1つの質問@Warrior、なぜあなたは 'ed.focus();'が必要ですか?ありがとう – tif

+2

TinyMCE APIドキュメンテーションのhttp://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.focusによると、この呼び出しの目的は次のようになります。 "このエディタをactiveEditorとして設定します。それはエディタの内部にDOMの焦点を置くことになる」と語った。 –

5

より良い方法は、(1)、次に(2)execCommand()メソッドを使用し、必ず選択が空でないようにするために簡単なチェックを実行することです。

execCommand()を使用すると、元に戻すことができます。 @ Warriorの回答は、取り消し不可能なsetContent()を使用しています。

ed.addButton('mybutton', { 
    title: 'My button', 
    class: 'MyCoolBtn', 
    image: 'MyCoolBtn.png', 
    onclick: function() { 
    ed.focus(); 
    var text = ed.selection.getContent({'format': 'html'}); 
    if(text && text.length > 0) { 
     ed.execCommand('mceInsertContent', false, '<tag>'+text+'</tag>'); 
    } 
    } 
}); 
+1

それ以外は 'mceReplaceContent'でなければなりません。どのように後でそれを選択する上の任意のアイデアですか? –

関連する問題