加载分配使用TinyMCE API卸载插件或MenuItem

时间:2014-03-08 11:38:49

标签: javascript api plugins tinymce-4

我正在使用TinyMCE 4.0.x, API4来开展工作项目。我有一些简单的自定义插件,如:

tinymce.PluginManager.add('simplePlugin', function(editor, url) {
    editor.addButton('simplePluginButton', { 
        text: 'Simple Example', 
        icon: false, 
        onclick: function() { alert('Do something...'); } });

    editor.addMenuItem('simplePluginMenuItem', { 
        text: 'Simple Example', 
        context: 'tools', 
        onclick: function() { alert('Do something...'); } });
});

我想加载 resp。使用 TinyMCE API 卸载 Plugin-MenuItem 插件按钮(或插件本身!) strong>和按钮分别。项目分别插件名称(在我的情况下是 simplePluginMenuItem simplePluginButton simplePlugin )。

我面临的问题是我无法使用API到达/找到插件或MenuItem /工具栏按钮!

我尝试了不同的方法但没有成功!例如:

  • 我可以使用tinymce.activeEditor.plugins获取和修改插件列表,但是如何使用API​​重新加载编辑器?
  • the tinymce.ui namespace有一个MenuItem类,有一个remove method - 如何通过API找到MenuItem?当我打电话给tinymce.activeEditor.editorManager.ui.Menu时,我正在上课,而不是当前的菜单实例!有没有办法使用API​​检索当前菜单实例?
  • editor instance有很多属性,但它们都不适用于菜单或工具栏。

我错过了什么吗?有没有办法使用API​​来检索MenuItemToolbarButton,或者API是否只能用于创建新的编辑器项目。组件?

像这样的伪代码

tinymce.activeEditor.getActiveMenu.findMenuItem('simplePluginMenuItem').remove();

我发现了这个old SO post,但当时(2009年)问的问题是API版本4.0.x还没有发布。

1 个答案:

答案 0 :(得分:1)

我找到的一个可能的解决方案是给工具栏按钮和自定义插件的菜单项,包含div元素的唯一ID:

tinymce.PluginManager.add('simplePlugin', function(editor, url) {
    editor.addButton('simplePluginButton', { 
        id  : 'simplePluginButton001',
        text: 'Simple Example', 
        icon: false, 
        onclick: function() { alert('Do something...'); } });

    editor.addMenuItem('simplePluginMenuItem', {
        id  : 'simplePluginMenuItem001',    
        text: 'Simple Example', 
        context: 'tools', 
        onclick: function() { alert('Do something...'); } });
});

现在,TinyMCE编辑器中生成的HTML代码如下所示:

<div    id="simplePluginButton001"
        role="button" 
        class="mce-widget mce-btn mce-first mce-last" 
        tabindex="-1" 
        aria-labelledby="simplePluginButton001">
            <button 
                role="presentation" 
                type="button" 
                tabindex="-1">
                    Simple Example
            </button>
</div>

可以直接检索和操作div元素容器(例如使用jQuery):

var pluginToolbarButton = $("#simplePluginButton001");
pluginToolbarButton.hide();
//pluginToolbarButton.show();
//pluginToolbarButton.remove();

这对我的情况很好 - 我可以建立菜单项的列表。工具栏按钮ID,应该是不可见的。可见。

尽管如此,我希望我可以将API用于此类操作 - IMO更优雅且似乎正确