在项目中将编辑器更改为 editor 时,报错:CKEDITOR is not defined 。
我这里的现象是:在 idea 上面启动项目访问没有出错,但是部署到服务器上,使用特定客户端访问时出错。
在保证 ckeditor.js 文件能正常访问的情况下,还是会出现这个问题。考虑到是否是客户端使用的浏览器内核太低,导致版本不兼容。最后在 Stack Overflow 上看到了一个提问,和我的情况很相似,使用他的办法解决了这个问题。
原因是:ckeditor 的版本太高,不兼容低版本的浏览器内核,导致出错。
解决方法是:设置 ckeditor 编辑器的环境兼容。具体指:在CKEDITOR 对象创建之前,让 ckeditor 兼容低版本浏览器。代码:建议像下面一样(在引入 ckeditor.js 之后就设置 CKEDITOR.env.isCompatible = true ):
<script src="ckeditor/ckeditor.js"></script>
<script>
CKEDITOR.env.isCompatible = true;
</script>
附上官网对这个问题的说明:
https://ckeditor.com/docs/ckeditor4/latest/guide/dev_unsupported_environments.html
上述解决办法是在保证你的 js 文件能被正常加载的前提下,出现此问题的解决方法。假如你的 js 文件无法被正常加载,需要先调整你的 js 文件的位置,使其能正常加载。
调整位置的建议:
在某些情况下,项目部署到 tomcat 上无法正常加载 ckeditor.js 文件,可能是因为ckeditor.js 文件放在项目的某个静态资源目录下,而此 js 文件可能调用了项目某些资源,导致无法成功加载,可以尝试将 ckeditor 整个文件夹放到 tomcat 根目录下,尝试使用绝对路径。
此外:如果同时引用了 ckeditor.js 和 adapters 目录下的 jquery.js,那么 adapters 下的 jquery.js 需要在 ckeditor.js 之后引入。
上述是我针对此问题采取的解决方法,可能我的问题和别人的问题不一样,还有出现此问题的其他原因,在此我不列举。