如何在TinyMCE 6编辑器中隐藏工具栏和菜单栏?
我们此前在TinyMCE 5版本中使用的实现方式如下:
var tinyEditor; tinymce.init( { selector: "textarea", plugins: [ "advlist", "anchor", "autolink", "charmap", "code", "fullscreen", "help", "image", "insertdatetime", "link", "lists", "media", "preview", "searchreplace", "table", "visualblocks", ], toolbar: "undo redo | styles | bold italic underline strikethrough", setup : function(ed){ tinyEditor = ed; } }); // 后续按需隐藏菜单栏、状态栏 tinyEditor.settings.menubar = false; tinyEditor.settings.statusbar = false;
在TinyMCE 6版本中,.settings属性已被官方移除,上述TinyMCE 5中通过修改settings属性隐藏菜单栏、状态栏的方案已失效,以下是TinyMCE 6中隐藏/显示菜单栏、状态栏、工具栏的正确实现方式:
1. 初始化时直接配置隐藏(无动态切换需求场景)
如果不需要在编辑器加载完成后动态切换UI元素的显示状态,直接在初始化配置中传入对应参数即可,配置后默认加载就会隐藏对应区域:
tinymce.init({ selector: "textarea", // 其余插件、原有配置保持不变 menubar: false, // 设为false隐藏菜单栏 statusbar: false, // 设为false隐藏状态栏 toolbar: false, // 设为false隐藏工具栏,需要显示时传工具栏配置字符串即可 })
2. 初始化后动态切换显示/隐藏(对应旧版本动态改配置的场景)
TinyMCE 6 把配置的读写能力统一收拢到了options API下,不再允许直接修改settings属性,动态修改配置调用对应API即可:
// 先拿到编辑器实例tinyEditor,和旧版本通过setup拿到实例的逻辑一致 // 动态隐藏菜单栏 tinyEditor.options.set('menubar', false); // 动态隐藏状态栏 tinyEditor.options.set('statusbar', false); // 动态隐藏工具栏 tinyEditor.options.set('toolbar', false); // 需要恢复显示时,把参数改回对应配置值即可 // 例:恢复默认菜单栏 tinyEditor.options.set('menubar', 'file edit view insert format tools table help'); // 例:恢复自定义工具栏 tinyEditor.options.set('toolbar', 'undo redo | styles | bold italic underline strikethrough');
如果修改配置后UI没有自动刷新,调用一次tinyEditor.ui.redraw()强制重绘编辑器UI即可生效。
如果是临时快速实现需求,也可以直接通过DOM操作控制对应区域的显隐,TinyMCE的UI元素都有固定的类名标识:
// 隐藏菜单栏 tinyEditor.container.querySelector('.tox-menubar').style.display = 'none'; // 隐藏状态栏 tinyEditor.container.querySelector('.tox-statusbar').style.display = 'none'; // 隐藏主工具栏 tinyEditor.container.querySelector('.tox-toolbar__primary').style.display = 'none'; // 恢复显示时把display属性设为空字符串即可
注意:直接操作DOM的方式依赖TinyMCE内置的类名,跨大版本升级时有可能因为类名调整失效,优先使用官方提供的options API兼容性更有保障。
内容的提问来源于stack exchange,提问作者user1608528
相关产品推荐
相关产品推荐

