CKEDITOR相关学习问题

来源:互联网 发布:学java工程师 编辑:程序博客网 时间:2024/06/11 05:30

今天需要用到一个网页编辑器功能,看了几个编辑器,就采用了CKEDITOR编辑器,这是个开源的编辑器,功能强大,虽然很多JS文件里边的代码都是没有格式的,这看起来太难受了,但是想用还是要付出代价的。。。

主要是说一下遇到的问题:

1如何添加一个自己的按钮即控件,这个SDK上有例子就不说了,但是要说明一点,例子上只是说了在plugins的目录下面创建一个自己控件的文件夹(例如timestamp文件夹),然后再在timestamp文件夹里边创建一个icons文件夹,里边放上空间图标,再回到timestamp文件夹里创建一个js文件里边写上相应的代码,就是为了控件初始化,添加相应的点击调用函数等。最重要的一点是这里边写完了,要在显示页面的编辑框中额外用JS语言注册一下才可以使用:如下

<textarea id="textarea" data-sample="1"></textarea>// 创建我们自己的编辑框
            <script data-sample="1"> //用ckeditor替换我们的编辑框
    CKEDITOR.plugins.addExternal( 'timestamp', '../ckeditor/plugins/timestamp/', 'plugin.js' );  //这里边第一个参数是控件的名字,第二个是控件所在的目录(即我们自己创建的那个控件的目录),第三个参数是用来配置空间的JS文件名字。第二个参数路径一定要写对,不然会调用失败


CKEDITOR.replace('textarea', {//替换成CKEDITOR编辑框 
uiColor:'#14B8C4',//这个是替换的UI颜色
extraPlugins: 'timestamp'//额外的控件 即我们添加的
} );
              
            </script>



2.实现将文本框输入的内容保存在服务器中,即利用

var str = CKEDITOR.instances.textarea.document.getBody().getHtml(); 获取到编辑框内的带有HTML标签的所有文本。(编辑框内可以对输入的内容进行格式化,如果想保存带有格式的内容,就需要用这个方法)

var str = CKEDITOR.instances.textarea.document.getBody().getText(); 获取纯文本内容,即设置的所有格式均不存在,只是纯文本,空格换行等都会去除。

我想实现的功能是保存原样的内容存到服务器上,下次再从服务器读出的化能够回复原样,所有就只可以用第一个函数。

我采用的方法是利用AJAX异步传送到PHP后台进行处理,可是获取完文本内容后,在传送给PHP后台的时候字符串出现了问题,一些特殊符号没有进行转义,如HTML的空格为&nbsp; &符号就没有识别,导致空格后边的内容都无法显示。

开始用的编码函数是encodeURI发现不起作用,后来解决办法为改用encodeURIComponent()函数就解决了问题。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。


0 0
原创粉丝点击