再次更新ckeditor-syntaxhighlighter插件,完美修复

昨天匆忙发了个更新版,今天去找CKeditor的api文档看了很久,终于找到解决办法了

CKeditor的对象跟FCKeditor不大一样,不能直接调用innerHTML和outerHTML了,绕了个大弯子,在当前节点前插入一个新节点,然后删除原先的节点。。。很傻,不过解决了问题。

顺便给高级配置页多加了一个选项“不自动转换超链接”,syntaxhighlighter默认会把代码里的网址转换成超链接,看起来很不爽,现在可以自由设置了,呵呵

来个图

ckeditor-sh-2.jpg

使用方法:

1. 解压附件到plugins (sablog2.0在include\editor\plugins)

2. 打开CKeditor目录下的config.js文件,添加两行
    config.extraPlugins = 'syntaxhighlight';
    config.toolbar_Full.push(['Code']);

3. 打开你的编辑器,开始插入代码吧~

修复CKeditor-SyntaxHighlighter插件的一处bug

大概在一个月以前,我为大家介绍了一款让CKeditor支持SyntaxHighlighter的一款插件,我也一直在用这款插件来贴代码。后来小A发布了CKeditor 3.1精简版里面已经附带了代码高亮的插件,但是比较简陋,没有高级设置选项,所以我还是替换成了之前的这个插件。

今天白建鹏先生告诉我说发现了一个bug,插入代码以后再修改的话,空格和缩进会变成 ,源代码被破坏了。查看了插件源码,发现原来是插入代码到编辑器中的时候调用了CKeditor.element.setText()方法,这个方法会把前置的空白字符替换成 ,于是想到改用CKeditor.element.setHtml(),但是发现这样会丢失换行信息,而且制表符也会被替换成空格,问题更大。

找不到办法从根源上解决问题,只能在读出代码的时候把 转义回空格,这样的后果是会丢失缩进信息,制表符也变成了空格,治标不治本。

发个更新包,也算是解决了问题,但是不完美。若有高手路过,还望指教。。。

2010-02-27 已经找到解决办法,请到这里下载更新版本

为CKeditor加上SyntaxHighlighter支持

作为一个以技术内容为主的blog,没有代码高亮怎么行,可是sablog 2.0使用的CKeditor没有代码高亮插件,我只好找啊找。。。

废话不多说,你首先需要SyntaxHighlighter,它才是让你的代码高亮起来的关键。

然后我们要为Ckeditor添加一个插件,来让它为我们生成能被SyntaxHighlighter识别的代码,这个插件最初是在这里找到的,但是貌似作者很久没更新了,而SyntaxHighlighter更新了,所以产生一个bug,设置选项里有一个不能被SyntaxHighlighter识别的属性,只好自己改一下了,顺便汉化了一下~

放两个插件界面演示图:

sh_plugin_1.png

sh_plugin_2.png

功能还是很多的,能设置起始行号,突出某行等。代码效果请看我的其它日志,比如这篇

使用方法:

  1. 解压附件到plugins (sablog2.0在include\editor\plugins)
  2. 打开CKeditor目录下的config.js文件,添加两行
    config.extraPlugins = 'syntaxhighlight';
    config.toolbar_Full.push(['Code']);
  3. 打开你的编辑器,开始插入代码吧~

2010-02-27 该插件有bug,请到这里下载更新版本