0. 动手前的备份(强烈建议)
动手前,先把整个项目文件夹完整复制一份保存好(放到项目同级目录或打包成压缩包都行)。万一改动出问题,可直接用这份备份恢复到改动前的状态。等确认改动无误、运行稳定后,再删掉备份即可。
1. 问题背景
项目中 UEditor 自带“图表(charts)”功能,并依赖 third-party/highcharts/ 下的 Highcharts 库。该功能实际并未被使用,却引入整套 Highcharts 代码与资源,占用体积且存在 Highcharts 商业授权合规风险。本次目标:彻底移除 UEditor 对 Highcharts 的依赖与图表功能,同时保证 UEditor 其他核心功能(表格、图片、视频、附件、预览等)不受影响。
2. 改动文件总览
| 类型 | 文件/目录 |
|---|---|
| 修改 | public/system/plug/ueditor/ueditor.all.js |
| 修改 | public/system/plug/ueditor/ueditor.all.min.js |
| 修改 | public/system/plug/ueditor/ueditor.parse.js |
| 修改 | public/system/plug/ueditor/ueditor.parse.min.js |
| 修改 | public/system/plug/ueditor/lang/zh-cn/zh-cn.js |
| 修改 | public/system/plug/ueditor/lang/en/en.js |
| 修改 | public/system/plug/ueditor/themes/default/css/ueditor.css |
| 修改 | public/system/plug/ueditor/themes/default/css/ueditor.min.css |
| 删除 | public/system/plug/ueditor/dialogs/charts/(整目录) |
| 删除 | public/system/plug/ueditor/third-party/highcharts/(整目录) |
| 删除 | public/system/plug/ueditor/themes/default/images/charts.png |
3. 具体修改步骤
3.1 ueditor.all.js(非压缩版编辑器)
1. 删除整个 // plugins/charts.js 开头的 UE.plugin.register('charts', function (){ ... }); 块。该块包含:validData()、data-chart 属性读写、edui-charts-table 类、chartserror 事件逻辑。
2. 在 iframeUrlMap 对象中删除:
'charts': '~/dialogs/charts/charts.html'3. 在 dialogBtns.ok 数组末尾删除 , 'charts'。
4. 将:
fullscreen: /charts|preview/.test(cmd),改为:
fullscreen: cmd === 'preview',5. 将按钮禁用判断:
disabled:(cmd == 'scrawl' && editor.queryCommandState("scrawl") == -1) || ( cmd == 'charts' )改为:
disabled:(cmd == 'scrawl' && editor.queryCommandState("scrawl") == -1)3.2 ueditor.parse.js(前端内容解析)
- 删除
UE.parse.register('charts',function( utils ){ ... });整个块。该块负责在有data-chart的表格时动态加载 jQuery、Highcharts、chart.config.js并渲染图表,含loadHighcharts、window.Highcharts、$(container).highcharts(...)等。
3.3 两个 .min.js 压缩文件
1. 删除 UE.plugin.register("charts",function(){...}) / UE.parse.register("charts",function(a){...}) 压缩块;
2. 删除 iframeUrlMap 中的 ,charts:"~/dialogs/charts/charts.html";
3. 删除 dialogBtns 数组中的 ,"charts";
4. 将 fullscreen:/charts|preview/.test(d) 改为 fullscreen:"preview"==d;
5. 将 disabled:"scrawl"==d&&...||"charts"==d 改为仅保留 disabled:"scrawl"==d&&...。
⚠️ .min.js 为单行压缩文件,删除时须保证外层逗号分隔符正确,避免语法断裂。建议:若项目有 UEditor 构建/压缩链路,先改源码再重新 min 化;若没有(本项目现状),则手动精确删除,并自行确认编辑器使用正常。
3.4 语言包
lang/zh-cn/zh-cn.js:labelMap删除, 'charts': '图表';删除'charts':{ 'static':{ ... } }块。lang/en/en.js:labelMap删除, 'charts': 'charts';删除'charts':{ 'static':{ ... } }块。
3.5 主题样式与素材
1. 删除 ueditor.css 中:
.edui-default .edui-for-charts .edui-icon {
background: url( ../images/charts.png ) no-repeat 2px 3px!important;
}2. 在 ueditor.min.css 中删除对应压缩规则 .edui-default .edui-for-charts .edui-icon{...}。
3. 删除 themes/default/images/charts.png。
3.6 删除功能相关目录
- 删除
dialogs/charts/(含charts.html、charts.js、chart.config.js、charts.css、images/)。 - 删除
third-party/highcharts/(含 JS、modules、themes、adapters 全部 Highcharts 文件及授权信息)。
4. 注意事项
- 不要删除
third-party/jquery-1.10.2.min.js:仍被 attachment/image/video 等对话框使用。 - 不要清理
third-party/SyntaxHighlighter/shCore.js中的cfchart等关键词:那是 ColdFusion 代码高亮列表,与 Highcharts 无关。 - 数据兼容:若已有带
data-chart的历史表格,移除后可作普通表格展示(不再渲染为 Highcharts 图表),无需数据库迁移。 .min.js 需人工精确编辑:无构建链路时,先改非压缩版,再对 min 文件做等价删除,并确认页面可正常使用。

