2012-08-24 35 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'); 
相关问题