You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级TinyMCE至6.x后settings不可用,如何动态添加工具栏?

在TinyMCE 6.x中动态添加工具栏的方法

TinyMCE 6重构了编辑器的配置管理逻辑,原5.x版本直接操作settings属性的方式不再适用,需要通过官方提供的API完成动态修改。以下是具体实现步骤:

1. 获取编辑器实例

和5.x版本一致,先获取目标编辑器的实例:

const tinyMceInstance = tinymce.get('tinymceid');

2. 动态加载依赖插件

如果要添加的功能依赖特定插件(比如image插件),需要先通过plugins.load()方法加载插件,该方法返回Promise,建议用异步方式处理:

// 异步加载image插件
await tinyMceInstance.plugins.load('image');

3. 修改工具栏配置并刷新

TinyMCE 6的工具栏配置通过options对象管理,修改后需要调用toolbar.refresh()使更改生效:

情况1:工具栏为数组格式(推荐)

如果初始化时工具栏配置为数组结构(如toolbar: [/* 分组配置 */]),直接修改对应组的items即可:

// 获取当前工具栏配置
const toolbar = tinyMceInstance.options.get('toolbar');

// 向第4组(索引4)添加image按钮
if (toolbar[4]) {
  toolbar[4].items.push('image');
  // 更新配置
  tinyMceInstance.options.set('toolbar', toolbar);
  // 刷新工具栏
  tinyMceInstance.ui.toolbar.refresh();
}

情况2:工具栏为字符串格式

如果初始化时工具栏是字符串(如toolbar: 'undo redo | bold italic'),需要先转换为数组结构再修改:

let toolbar = tinyMceInstance.options.get('toolbar');

// 将字符串格式转为数组结构
if (typeof toolbar === 'string') {
  toolbar = toolbar.split('|').map(group => ({
    items: group.trim().split(' ').filter(item => item) // 过滤空字符串
  }));
}

// 向第4组添加image按钮
if (toolbar[4]) {
  toolbar[4].items.push('image');
  tinyMceInstance.options.set('toolbar', toolbar);
  tinyMceInstance.ui.toolbar.refresh();
}

注意事项

  • 动态加载插件时,需确保插件依赖的资源可正常访问;
  • 若要添加多个按钮,可多次调用push()或直接传入按钮数组;
  • 编辑器处于只读状态时,修改工具栏不会生效,需先切换为可编辑模式。

内容的提问来源于stack exchange,提问作者Milad Ahmadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:35:27