我正在使用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重新加载编辑器?tinymce.ui
namespace有一个MenuItem
类,有一个remove
method - 如何通过API找到MenuItem?当我打电话给tinymce.activeEditor.editorManager.ui.Menu
时,我正在上课,而不是当前的菜单实例!有没有办法使用API检索当前菜单实例?我错过了什么吗?有没有办法使用API来检索MenuItem
或ToolbarButton
,或者API是否只能用于创建新的编辑器项目。组件?
像这样的伪代码:
tinymce.activeEditor.getActiveMenu.findMenuItem('simplePluginMenuItem').remove();
我发现了这个old SO post,但当时(2009年)问的问题是API版本4.0.x还没有发布。
答案 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更优雅且似乎正确。