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

求助:在EJS文件中集成CKeditor失败,文本框未转为编辑器

解决EJS中CKEditor无法渲染的问题

别担心,CKEditor完全支持EJS环境,你的问题并不是框架兼容问题,大概率是漏掉了编辑器初始化的关键步骤。

核心问题分析

EJS作为模板引擎,最终会编译成纯HTML输出到浏览器,所以CKEditor和EJS本身没有冲突。你已经正确引入了CKEditor的脚本,也给textarea加了editor类,但CKEditor不会自动识别这个类并完成初始化——你需要手动触发这个过程。

解决方案

这里提供两种可行的初始化方式,选一种适合你的即可:

方式1:手动指定元素初始化

在引入ckeditor.js的脚本之后,添加一段初始化代码,等待DOM加载完成后替换目标textarea:

<script type="text/javascript" src="assets/ckeditor/ckeditor.js"></script>
<!-- 新增初始化脚本 -->
<script>
// 确保DOM完全加载后再执行
document.addEventListener('DOMContentLoaded', function() {
  // 通过类名获取所有需要转为编辑器的textarea
  const editorElements = document.querySelectorAll('.editor');
  editorElements.forEach(el => {
    CKEDITOR.replace(el);
  });
});
</script>

如果你的页面只有这一个需要转换的textarea,也可以直接通过name属性精准定位:

CKEDITOR.replace('message');

方式2:配置自动识别类名

如果你想让CKEditor自动识别所有带有editor类的元素,可以直接调用replaceAll方法:

<script type="text/javascript" src="assets/ckeditor/ckeditor.js"></script>
<script>
// 自动替换所有拥有editor类的textarea
CKEDITOR.replaceAll('editor');
</script>

额外排查点

如果按照上面的方法还是没生效,可以检查以下几点:

  • 打开浏览器控制台,确认是否有新的报错信息(比如CKEditor的插件加载失败、权限问题等)
  • 确保没有其他JS代码修改或覆盖了这个textarea元素
  • 验证textarea的name属性是否正常存在(CKEditor会保留该属性,不影响表单提交)

内容的提问来源于stack exchange,提问作者Lj Craft

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:05:33