2009-12-10 3 views
10

하는 태그로 선택한 텍스트를 감싸는 버튼을 추가하는 방법 : 텍스트 editior에서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>'); 
    } 
}); 

감사 : 나는 사용자 정의 버튼 텍스트를 삽입 만들지 만, 텍스트를 포장하지하는 방법을 알아 냈어요 ... 여기에 현재 코드입니다! (1) 반드시 선택, 다음 (2) execCommand() 방법을하지 빈 사용되었는지 확인하기 위해 빠른 검사를 수행

답변

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

@Warrior, 왜 'ed.focus();'가 필요한가요? 감사합니다 – tif

+2

http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.focus의 TinyMCE API 문서에 따르면이 호출의 목적은 다음과 같습니다. "이 편집기를에서 activeEditor로 설정하십시오. 편집자 내부에 DOM 포커스도 놓을 것 "이라고 덧붙였다. –

5

이를 달성하기 위해 더 나은 방법입니다.

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'가 아니면 예외입니다. 나중에 그것을 선택하는 방법에 대한 아이디어? –

관련 문제