2012-08-24 75 views
2

編輯:增加了一個小提琴示例 - http://fiddle.tinymce.com/EZbaab/2獲取按鈕TinyMCE的編輯器實例點擊

我現在有一個頁面上有一個TinyMCE的實例,並繼承其三個獨立的文字區域。

我有一個自定義菜單,其上有可點擊的子菜單項(使用Django生成),單擊時,將內容插入到當前活動的tinyMCE編輯器(textarea)中。麻煩的是,無論WHICH編輯器工具欄被點擊了,都會發生這種情況。因此,例如,如果我點擊頂級編輯器的工具欄項目,但重點在於底部編輯器,則文本將粘貼到底部編輯器中。

我需要或者武力,它的工具欄上單擊單擊菜單項時,成爲關注的編輯器(這恰好像粗體,斜體,下劃線默認按鈕,但不是我的自定義菜單項)

或者我需要傳遞被點擊的編輯器的實例ID到以某種方式粘貼到文本中的函數。困難在於我正在努力在文檔中找到對這兩個任務的任何引用。

TinyMCE的初始化代碼:

tinyMCE.init({ 
    forced_root_block : false, 
    force_br_newlines : true, 
    force_p_newlines : false, 
    mode : "textareas", 
    theme : "advanced", 
    plugins : "contextmenu,paste,save,-stdpara", 
    theme_advanced_buttons1 : ",bold,italic,underline,cleanup,|,undo,redo,|,cut,copy,paste,|,stdpara", 
    theme_advanced_buttons2 : "", 
    theme_advanced_toolbar_location : "top", 
    theme_advanced_toolbar_align : "left", 
    force_br_newlines : true, 
    force_p_newlines : false, 
    forced_root_block : '', 
});  

(其中stdpara是我的自定義菜單插件):

菜單代碼(剝離出來Django的,只是增加了一些隨機數據:

tinymce.create('tinymce.plugins.StandardParagraphPlugin', { 
    createControl: function(n, cm) { 
     switch (n) { 
      case 'stdpara': 
       var c = cm.createSplitButton('stdparagraph', { 
        title : 'Standard Paragraph', 
       image : 'img/para.png', 
       }); 

       c.onRenderMenu.add(function(c, m) { 
        m.add({title : 'Standard Paragraphs', 'class' : 'mceMenuItemTitle'}).setDisabled(1); 
        category_menu = m.addMenu({title : 'Some Title'}); 
        category_menu.add({title : 'Some sub-title', onclick : function() { tinyMCE.activeEditor.execCommand('mceInsertContent',false,'The Text') }); 
        }}); 
       return c; 
      } 
     return null; 
    } 
}); 
+0

+1一個詳細的問題,甚至一個小提琴 – Thariama

回答

2

我需要強制編輯器,它的工具欄點擊到 成爲焦點時,菜單項是c舔(這恰好像粗體,斜體 默認的按鈕,下劃線,但不是我的自定義 菜單項)

這是正確的,但問題就出在這裏

tinyMCE.activeEditor.execCommand('mceInsertContent',false,'The Text') 

這將執行活動編輯器上的命令。例如,當用戶點擊編輯器時,tinyMCE.activeEditor被重置。

解決下拉菜單所屬的編輯器會更好。 它有點棘手,看起來不太優雅,但只要tinymce不改變按鈕邏輯和命名它將是tinymce更新的證明。見我的TinyMCE的小提琴這裏:http://fiddle.tinymce.com/IZbaab/1

+0

謝謝,最終與此一起去! – PT114

+0

完美!請注意,爲了獲得焦點,不需要實際插入文本。 'tinyMCE.activeEditor.execCommand('mceInsertContent',false,'')'會做。 –

1

對於未來的疑難解答

createControl(N,釐米)的第二個參數 - 這樣, '釐米' 參數 - 是contentManager。

爲了獲得當前的編輯器,你可以簡單地調用cm.editor

要插入內容:cm.editor.execCommand('mceInsertContent', false, 'my text')

1

不知道是否有幫助,但我選擇相應的文本字段,如:

tinyMCE.get('yourtextareaid').execCommand('mceInsertContent', false, 'bla'); 
相關問題