繁体   English   中英

在按钮上单击tinyMCE编辑器实例

[英]Getting the tinyMCE editor instance on button click

编辑:添加了一个小提琴示例-http: //fiddle.tinymce.com/EZbaab/2

我目前有一个页面,上面有一个tinyMCE实例,以及三个继承它的独立文本区域。

我有一个自定义菜单,上面有可单击的子菜单项(使用Django生成),单击后可将内容插入当前活动的tinyMCE编辑器(文本区域)。 问题是,无论单击了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;
    }
});

我需要强迫单击菜单项的编辑器变得集中起来(单击默认按钮(如粗体,斜体,下划线,但不适用于我的自定义菜单项)会变成焦点)

没错,但是问题出在这里

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

这将在活动的编辑器上执行命令。 例如,当用户单击编辑器时, tinyMCE.activeEditor将重置。

最好处理下拉菜单所属的编辑器。 这有点棘手,看起来也不是很优雅,但是只要tinymce不更改按钮逻辑并且命名,就可以证明tinymce更新。 在这里查看我的tinymce提琴: http : //fiddle.tinymce.com/IZbaab/1

对于将来的疑难解答

createControl(n,cm)的第二个参数-因此'cm'参数-是contentManager。

要获取当前的编辑器,您只需调用cm.editor

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

不知道是否有帮助,但是我选择了相应的文本字段,例如:

tinyMCE.get('yourtextareaid').execCommand('mceInsertContent', false, 'bla');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM