欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

FckEditor 中文配置手册

程序员文章站 2022-03-07 08:54:17
【摘要】 性能 首先,fckeditor的性能是非常好的,用户只需很少的时间就可以载入fckeditor所需文件.对于其他在线编辑器来说,这几乎是个很难解决的难题,因为在开...
【摘要】
性能

首先,fckeditor的性能是非常好的,用户只需很少的时间就可以载入fckeditor所需文件.对于其他在线编辑器来说,这几乎是个很难解决的难题,因为在开启编辑器时需要装载太多的文件.比如cuteeditor,虽然功能比fckeditor还要强大,可是,它本身也够庞大了,至于freetextbox等,其易用性与fckeditor相比,尚有差距,可以说,fckeditor是一个别具匠心的在线编辑器,它里面融入了作者高深的面向对象的javascript功力,集易用性与强大的功能与一体.
【全文】


性能

首先,fckeditor的性能是非常好的,用户只需很少的时间就可以载入fckeditor所需文件.对于其他在线编辑器来说,这几乎是个很难解决的难题,因为在开启编辑器时需要装载太多的文件.比如cuteeditor,虽然功能比fckeditor还要强大,可是,它本身也够庞大了,至于freetextbox等,其易用性与fckeditor相比,尚有差距,可以说,fckeditor是一个别具匠心的在线编辑器,它里面融入了作者高深的面向对象的javascript功力,集易用性与强大的功能与一体.

.与编辑器相关的所有图像,脚本以及调用页
.语言文件
.编辑器的皮肤文件
.工具样的贴图等

这些将导致在服务器和客户端间产生相当的流量.如果有许多文件被调用,那么即便每个文件很小.也会让用户等得不耐烦.

在2.0版中,开发人员有两种方法来解决这个问题.
那就是指定装载顺序和脚本压缩

装载顺序
从2.0版开始,编辑器按以下步骤装载资源:
.基本页(就是编辑器所在页)以及装入编辑器的js脚本
.用来建立编辑器的脚本
.编辑器的语言和皮肤.
.建立编辑器.
.载入预置的编辑文档内容.
.从现在开始,用户可以阅读和编辑文档了,不过,拖拽支持以及工具栏都是不可用的
.载入编辑器引擎脚本
.建立工具栏,并且可用
.从现在开始,编辑器的所有功能都已经完整
.载入工具栏图标

脚本压缩

在打包任何新版本时,编辑器的js脚本将会进行预处理.预处理步骤如下:
.移除所有代码注释
.移除所有无用的空白字符.
.将脚本合并成几个文件

使用上面的方法,我们可以将脚本文件的大小压缩到原来的50%.
压缩后,原始的代码仍然存在于一个名为_source的文件夹中

如何打包?
编辑器已经自带了打包程序,它位于fckeditor的根文件夹中_packager文件夹中,名为fckeditor.packager.exe,将其复制到fckeditor根文件夹中并运行,即可自动将js脚本打包并压缩
需要注意的是该程序是一个.net程序,必须安装.net framework才能使用

想要获取支持?
如果你捐赠15000欧元,你就可以获得1年的免费技术支持(比较贵的说,相当于人民币15万,不过西欧的费用相当惊人)

如何安装?

1.下载最新版的fckeditor
2.解压缩到你的站点根文件夹中名为fckeditor的文件夹中(名称必须为fckeditor,因为配置文件中已经使用此名称来标示出fckeditor的位置)
3.现在,编辑器就可以使用了,如果想要查看演示,可以按下面方法访问:
http:// <your-site>/fckeditor/_samples/default.html

注意:你可以将fckeditor放置到任何文件夹,默认情况下,将其放入到fckeditor文件夹是最为简单的方法.如果你放入的文件夹使用别的名称,请修改配置文件夹中编辑器basepath参数,如下所示:
ofckeditor.basepath="/components/fckeditor/";

另外,fckeditor文件夹中所有以下划线开头的文件夹及文件,都是可选的,可以安全的从你的发布中删除.它们并不是编辑器运行时必需的

如何将fckeditor整合进我的页面?

由于目前的版本提供的fckeditor仅提供了javascript式的整合,因此,这里仅讲述如何应用javascript来整合fckeditor到站点中,当然,其他各种语言的整合,你可以参考_samples文件夹中的例子来完成
1,假如编辑器已经安装在你的站点的/fckeditor/文件夹下.那么,第一步我们需要做的就是在页面的head段中放入script标记以引入javascript整合模块.例如:
<script type="text/javascript" src="/fckeditor/fckeditor.js"></script>

其中路径是可更改的

2,现在,fckeditor类已经可以使用了.有两个方法在页面中建立一个fckeditor编辑器:
方法1:内联方式(建议使用):在页面的form标记内需要插入编辑器的地方置入以下代码:
script type="text/javascript">
var ofckeditor = new fckeditor( 'fckeditor1' ) ;
ofckeditor.create() ;
</script>

方法2:textarea标记替换法(不建议使用):在页面的onload事件中,添加以下代码以替换一个已经存在的textarea标记

<html>
<head>
<script type="text/javascript">
window.onload = function()
{
var ofckeditor = new fckeditor( 'mytextarea' ) ;
ofckeditor.replacetextarea() ;
}
</script>
</head>
<body>
<textarea id="mytextarea" name="mytextarea">this is <b>the</b> initial value.</textarea>
</body>
</html>

3.现在,编辑器可以使用了

fckeditor类参考:
下面是用来在页面中建立编辑器的fckeditor类的说明

构造器:
fckeditor( instancename[, width, height, toolbarset, value] )
instancename:编辑器的唯一名称(相当于id)
width:宽度
height:高度
toolbarset:工具条集合的名称
value:编辑器初始化内容

属性:
instancename:编辑器实例名
width:宽度,默认值为100%
height:高度,默认值是200
toolbarset:工具集名称,参考fckconfig.js,默认值是default
value:初始化编辑器的html代码,默认值为空
basepath:编辑器的基路径,默认为/fckeditor/文件夹,注意,尽量不要使用相对路径.最好能用相对于站点根路径的表示方法,要以/结尾
checkbrowser:是否在显示编辑器前检查浏览器兼容性,默认为true
displayerrors:是否显示提示错误,默为true;

集合:
config[key]=value;
这个集合用于更改配置中某一项的值,如
ofckeditor.config["defaultlanguage"]="pt-br";

方法:
create()
建立并输出编辑器

repacetextarea(textareaname)
用编辑器来替换对应的文本框

如何配置fckeditor?
fckeditor提供了一套用于定制其外观,特性及行为的设置集.主配置文件名为fckconfig.js
你既可以编辑主配置文件,也可以自己定义单独的配置文件.配置文件使用javascript语法.

修改后,在建立编辑器时,可以使用以下语法:
var ofckeditor = new fckeditor( 'fckeditor1' ) ;
ofckeditor.config['customconfigurationspath'] = '/myconfig.js' ;
ofckeditor.create() ;

提醒:当你修改配置后,请清空浏览器缓存以查看效果

配置选项:

autodetectlanguage=true/false 自动检测语言
basehref="" _fcksavedurl="""" _fcksavedurl="""" 相对链接的基地址
contentlangdirection="ltr/rtl" 默认文字方向
contextmenu=字符串数组,右键菜单的内容
customconfigurationspath="" 自定义配置文件路径和名称
debug=true/false 是否开启调试功能,这样,当调用fckdebug.output()时,会在调试窗中输出内容
defaultlanguage="" 缺省语言
editorareacss="" 编辑区的样式表文件
enablesourcexhtml=true/false 为true时,当由可视化界面切换到代码页时,把html处理成xhtml
enablexhtml=true/false 是否允许使用xhtml取代html
fillemptyblocks=true/false 使用这个功能,可以将空的块级元素用空格来替代
fontcolors="" 设置显示颜色拾取器时文字颜色列表
fontformats="" 设置显示在文字格式列表中的命名
fontnames="" 字体列表中的字体名
fontsizes="" 字体大小中的字号列表
forcepasteasplaintext=true/false 强制粘贴为纯文本
forcesimpleampersand=true/false 是否不把&符号转换为xml实体
formatindentator="" 当在源码格式下缩进代码使用的字符
formatoutput=true/false 当输出内容时是否自动格式化代码
formatsource=true/false 在切换到代码视图时是否自动格式化代码
fullpage=true/false 是否允许编辑整个html文件,还是仅允许编辑body间的内容
geckousespan=true/false 是否允许span标记代替b,i,u标记
iespelldownloadurl=""下载拼写检查器的网址
imagebrowser=true/false 是否允许浏览服务器功能
imagebrowserurl="" 浏览服务器时运行的url
imagebrowserwindowheight="" 图像浏览器窗口高度
imagebrowserwindowwidth="" 图像浏览器窗口宽度
linkbrowser=true/false 是否允许在插入链接时浏览服务器
linkbrowserurl="" 插入链接时浏览服务器的url
linkbrowserwindowheight=""链接目标浏览器窗口高度
linkbrowserwindowwidth=""链接目标浏览器窗口宽度
plugins=object 注册插件
pluginspath="" 插件文件夹
showborders=true/false 合并边框
skinpath="" 皮肤文件夹位置
smileycolumns=12 图符窗列数
smileyimages=字符数组 图符窗中图片文件名数组
smileypath="" 图符文件夹路径
smileywindowheight 图符窗口高度
smileywindowwidth 图符窗口宽度
spellchecker="iespell/spellerpages" 设置拼写检查器
startupfocus=true/false 开启时focus到编辑器
stylesxmlpath="" 设置定义css样式列表的xml文件的位置
tabspaces=4 tab键产生的空格字符数
toolbarcancollapse=true/false 是否允许展开/折叠工具栏
toolbarsets=object 允许使用toolbar集合
toolbarstartexpanded=true/false 开启是toolbar是否展开
usebroncarriagereturn=true/false 当回车时是产生br标记还是p或者div标记

如何自定义样式列表呢?
fckeditor的样式工具栏中提供了预定义的样式,样式是通过xml文件定义的,默认的xml样式文件存在于fckeditor根文件夹下的fckstyls.xml文件中
这个xml文件的结构分析如下:
<?xml version="1.0" encoding="utf-8" ?>
<styles >
<style name="my image" element="img">
<attribute name="style" value="padding: 5px" />
<attribute name="border" value="2" />
</style >
<style name="italic" element="em" />
<style name="title" element="span">
<attribute name="class" value="title" />
</style >
<style name="title h3" element="h3" />
</styles>

每一个style标记定义一种样式,name是显示在下拉列表中的样式名,element属性指定此样式所适用的对象,因为fckeditor中的样式是上下文敏感的,也就是说,选择不同的对象,仅会显示针对这类对象定义的样式

拼写检查

fckeditor 带了两种拼写检查工具,一种是iespell,默认情况下使用这种,使用这种方式的拼写检查,要求客户下载并安装iespell这个小软件,另外,也提供 spellpager的方式来进行拼写检查,不过,由于spellpager是由php编写的服务器端脚本,因此,要求你的web服务器必须支持php脚本语言方可
更改拼写检查器的方式请参见有关配置文件的详细说明

压缩脚本

为了提供脚本载入的效率,fckeditor采用以下方法对脚本尽量压缩以减少脚本尺寸:
1,移除掉脚本中的注释
2.移除掉脚本中所有无意义的空白
另外,fckeditor还提供了一个专门用于压缩脚本的工具以便 你在发布时能减小文件尺寸,
你可以将_packager文件夹中的fckeditor.packager.exe复制到fckeditor根文件夹来运行并压缩脚本

本地化fckeditor
如果fckeditor没有提供您所需要的语言(实际上全有了),你也可以自行制作新的语言
,你只需要复制出en.js,然后在其基础上进行翻译.另外,语言名称与对应的脚本文件名必须遵循rfc 3066标准,但是,需要小写,例如:portuguess language对应的脚本文件名必须为pt.js
如果需要针对某个国家的某种语系,则可以在语系缩写后加上横线及国家缩写即可

在使用时,系统会自动侦测客户端语系及国别而运用适当的界面语言.

当建立一种新的语言后,你必须在"edit/lang/fcklanguagemanager.js"中为其建立一个条目,如下所示:
fcklanguagemanager.availablelanguages =
{

en : 'english',
pt : 'portuguese'
}

需要提醒的是,文件必须保存为utf-8格式

如何与服务器端脚本进行交互?
请查看例子以得到相关内容

另外,在asp.net中以以下步骤使用
1.把fckeditor添中到工具箱
2.托拽fckeditor控件到页面
3.为其指定名称
4.fckeditor 类的所有属性不光可以在代码中使用,而且可以作为fckeditor控件的属性直接使用,例如,要改变皮肤,可以在ui页面中指定 skinpath="/fckeditor/editor/skins/office2003"即可,其实fckeditor的asp.net版本可以做得更好,你可以找到fckeditor asp.net 2.1的源文件,然后修改该控件的设计,为其暴露更多有用的属性,重新编译即可
5,postback后的数据,使用fckeditor控件的value属性获得
6. 由于默认状态下,asp.net不允许提交含有html及javascript的内容,因此,你必须将使用fckeditor的页面的 validaterequest设为false.(<%@page validterequest="false" %>即可)


--------------------------------------------------------

附:

一、如何设置上传文件语言

把fckeditor根目录下面的fckconfig.js文件里

var _filebrowserlanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py
var _quickuploadlanguage = 'asp' ; // asp | aspx | cfm | lasso | php

这两行中改成您所需要调用的编辑器语言,如用asp.net则改为aspx;


二、解决中文的问题:
在web.config中加入:
<globalization requestencoding="gb2312" responseencoding="gb2312"/>
这样设置后可以显示中文的文件,但url地址也是中文的;
如果服务器对中文地址的解析不好,可能导致图片无法浏览;
所以修改:editor\filemanager\browser\default\frmresourceslist.html
中的openfile函数,把
window.top.opener.seturl( fileurl ) ;
修改为:
window.top.opener.seturl( escape(fileurl) ) ;


三.设置上传的目录:
1:在web.config中设置:
<appsettings>
<add key="fckeditor:userfilespath" value="/fck/upload/" />
</appsettings>

2:在session中设置:
在editor\filemanager\browser\default\connectors\aspx\connector.aspx中加入以下代码:
<script runat="server" language="c#">
protected override void oninit(eventargs e)
{
session["fckeditor:userfilespath"] = "/fck/upload1/";
}
</script>

附:如何在asp.net中动态设置上传图片的路径?

1.在javascript中修改fckconfig.imagebrowserurl的值,修改方式如下:
fckconfig.imagebrowserurl += "?path=要上传的文件路径";
如:要把文件上传到站点根目录的uploadfile文件夹中,则设置为:
fckconfig.imagebrowserurl += "?path=/uploadfile";
2.在"editor\filemanager\browser\default\connectors\aspx\connector.aspx"文件最后中增加以下程序:
<script runat="server" language="c#">
protected override void oninit(eventargs e)
{
if( request.querystring["path"]==null ){
session["fckeditor:userfilespath"] = "/uploadfiles/"; //设置默认值
}else{
session["fckeditor:userfilespath"] = request.querystring["path"];
}
}
</script>