页面加载时CKEditor编辑器不显示,控制台报getEditor未定义错误
问题描述
页面加载时CKEditor编辑器无法正常显示,JavaScript控制台抛出以下错误:
Uncaught TypeError: Cannot read property 'getEditor' of undefined
对应的调用栈信息:
ckeditor.js:347 Uncaught TypeError: Cannot read property 'getEditor' of undefined at a (ckeditor.js:347) at Object.CKEDITOR.replace (ckeditor.js:351) at submit-information:793
我当前的jQuery加载代码如下:
<script src="{{ asset('themes/js/jquery.min.js') }}"></script> <script src="https://cdn.ckeditor.com/4.20.0/standard/ckeditor.js"></script>
解决方案
我碰到过好多次这类CKEditor初始化失败的问题,大概率是加载顺序或者初始化时机不对导致的,给你几个实用的排查和解决方向:
- 确保CKEditor在jQuery之后加载:你现在的jQuery引入顺序是对的,但要确认CKEditor的脚本没有添加
async或defer属性——这类属性会让脚本异步加载,可能导致CKEditor先于jQuery就绪,进而找不到依赖抛出错误。 - 等待DOM完全就绪再初始化:别直接在全局作用域调用
CKEDITOR.replace(),把初始化代码放到jQuery的DOM就绪回调里,确保要替换的textarea元素已经存在于DOM中:$(document).ready(function() { // 替换成你实际的textarea ID CKEDITOR.replace('your-textarea-id'); }); - 检查CKEditor是否成功加载:打开浏览器开发者工具的「Network」标签,刷新页面,确认
ckeditor.js的请求状态是200(成功加载)。如果是用CDN链接,也要确认你的网络能正常访问该CDN资源。 - 排查脚本冲突或重复引入:检查页面里有没有重复引入CKEditor脚本,或者同时引入了其他富文本编辑器(比如TinyMCE)——这类情况可能会覆盖全局的
CKEDITOR变量,导致初始化失败。
内容的提问来源于stack exchange,提问作者Alireza moradi
相关产品推荐
相关产品推荐

