最近做一项目中使用到了CKEditor组件,在感叹CKEditor组件功能强大使用方面的同时,也被一些小问题深深的困扰了好久,问题及解决方法总结如下(使用CKEditor版本为3.5.3):
1、在引入CKEditor的ckeditor.js文件之后,在IE浏览器下显示正常,可是在firefox(版本4.0)浏览器下不显示,用firebug查看后提示CKEditor中有几处文件存在编码错误,CKEditor文件使用的是utf-8编码,而在firefox页面加载时把js文件的编码转换为ISO-8859-1,导致不支持中文编码出错(出错地方好像是CKEditor加的注释前加的空格有问题)。此后无论怎么统一编码为utf-8(js文件、页面),以及在页面加载js时指定编码格式都无用,firefox还是一如既往的把加载的js文件转换为ISO-8859-1格式,最后没辙只有把CKEditor中提示编码出错的地方的全部删除。这时编辑框上的提示的中文均为乱码,在无奈之下只好把zh-cn.js中的内容复制写到页面上,这时就CDEditor就会读取页面上的含中文的脚本代码,从而解决了firefox浏览器上的编辑框中文显示乱码问题。
(谁有好的解决firefox加载js文件时指定js编码格式的方法可以指点下,大家共同学习!)
2、在为CKEditor的编辑框设置值时,发现用CKEDITOR.instances.content.setData()的方法设值时提示函数有问题,推测应为设置的内容里含有CKEditor增加格式中含有引号的缘故。解决方法为直接把值赋为textarea的内容即可,如:<textarea cols="90" rows="10" id="content" name="content"><p>/n <span style="color:#ff0000;">我是中国人</span></p>/n</textarea>,CKEditor会把textarea的内容解析到自己定义的编辑框中。
以下问题是遇到的相关问题
3、使用jquery异步请求后服务器端返回的json字符串含有的中文解析为“??”的情况,网上查了下,一般的解决方法为统一所有的文件编码,可全部统一编码后还是没解决问题(拦截器编码与一致),后在的action中加了一句response.setCharacterEncoding("UTF-8"); 问题解决。
4、以前对jquery的异步请求返回机制不太了解,在请求action后常用的为“return;“或”return null;”,也没有太在意当action的返回success页面时,jquery请求后是怎么处理的,在项目中想要异步请求,但又想让它执行完成后跳转到success页面,在多方测试之后终于确定:jquery.ajax方法请求后对于action的跳转是直接过滤掉了(此处描述是否准确?)。如此,只能在ajax请求后的成功或失败方法中定义成功或失败跳转页面。