我希望在GeSHi中使用CKeditor,但我遇到了一些主要的困难。发生的情况是,如果我创建了一个新的内容,然后禁用CKeditor,这样我就可以在<pre> </pre>标记中包含一个代码片段。如果我随后保存,GeSHi会很好地完成它的工作,代码片段看起来也很好。
然而,如果我随后尝试编辑这段内容,CKeditor会在代码的格式上胡乱摆弄,特别是用特殊的转义序列替换许多字符,还试图关闭它认为是HTML标记但实际上是C++包含文件的内容,例如,#include <iostream>会让CKeditor在文本的末尾放置一个</iostream>。然后,在最好的情况下,我的代码看起来很糟糕。
在其他情况下,行为真的很奇怪:页面不会加载,而是给我一个服务器错误。我假设这是因为,在服务器端,CKeditor对代码片段所做的某些更改会导致GeSHi崩溃,反之亦然。
下面是一段示例代码,当我在纯文本编辑器中逐字输入并将其封装在<pre>标记中后,它看起来是正确的:
// All rights reserved
// Email: firstname.lastname@url.com
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
#include <fstream>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
myClass::myClass()
{
m_lthing = NULL;
m_athing = NULL;
m_bthing = NULL;
m_lthingthing = NULL;
m_athingthing = NULL;
m_bthingthing = NULL;
}但是,只需单击编辑,然后再次保存,而不做任何更改,会使CKeditor乱七八糟地处理代码,代码现在如下所示:
// All rights reserved
// Email: firstname.lastname@url.com
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
#include <fstream>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
myClass::myClass()
{
m_lthing = NULL;
m_athing = NULL;
m_bthing = NULL;
m_lthingthing = NULL;
m_athingthing = NULL;
m_bthingthing = NULL;
}</fstream></iostream>有人对此有什么想法吗,或者有人能推荐一个好的替代我现在正在使用的系统的方案吗?我并不是特别喜欢CKeditor或GeSHi,尽管到目前为止我对CKeditor很满意,而且我喜欢GeSHi做MATLAB格式化的事实。另外,根据下面的回答/评论,我已经尝试了Peter Petrik概述here的方法,但崩溃行为仍然发生。
谢谢。
发布于 2011-02-24 22:49:26
看看这个-这可能会对ckeditor-and-geshi-filter有帮助
发布于 2011-03-04 05:19:49
您使用的是哪个版本的Drupal/CKEditor/GeSHi?我会验证输入格式(管理/设置/过滤器),并确保您使用的任何格式都不会用额外的过滤器弄乱您的代码。还要验证允许的HTML标记。
https://stackoverflow.com/questions/5100310
复制相似问题