请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 新增登录提醒插件 - 用至我的站点 地图任务一定要做 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

MIUI手机主题设计大赛,奔驰大奖等你拿! 想加薪?!蓝色理想招聘提供你更多机会 悬赏答疑,赚取积分兑奖品!

查看: 29398|回复: 21

FCKeditor 实战技巧 - 1 [复制链接]

柠檬园主 楼主
帖子
70
体力
168
威望
40
居住地
辽宁省 大连市
发表于 2006-9-21 16:42:05 |显示全部楼层
'//--------------------------------------------------
'//原文:http://3rgb.com,作者:柠檬园主
'//转载请保留此信息
'//--------------------------------------------------

FCKeditor至今已经到了2.3.1版本了,对于国内的WEB开发者来说,也基本上都已经“闻风知多少”了,很多人将其融放到自己的项目中,更有很多大型的网站从中吃到了甜头。今天开始,我将一点点的介绍自己在使用FCKeditor过程中总结的一些技巧,当然这些其实是FCK本来就有的,只是很多人用FCK的时候没发现而已 :P

1、适时打开编辑器

很多时候,我们在打开页面的时候不需要直接打开编辑器,而在用到的时候才打开,这样一来有很好的用户体验,另一方面可以消除FCK在加载时对页面打开速度的影响,如图所示



点击“Open Editor"按钮后才打开编辑器界面




实现原理:使用JAVASCRIPT版的FCK,在页面加载时(未打开FCK),创建一个隐藏的TextArea域,这个TextArea的name和ID要和创建的FCK实例名称一致,然后点击"Open Editor"按钮时,通过调用一段函数,使用FCK的ReplaceTextarea()方法来创建FCKeditor,代码如下:

  1.      <script type="text/javascript">
  2.      <!--
  3.      function showFCK(){
  4.       var oFCKeditor = new FCKeditor( 'fbContent' ) ;
  5.       oFCKeditor.BasePath = '/FCKeditor/' ;
  6.       oFCKeditor.ToolbarSet = 'Basic' ;
  7.       oFCKeditor.Width = '100%' ;
  8.       oFCKeditor.Height = '200' ;
  9.       oFCKeditor.ReplaceTextarea() ;
  10.      }
  11.      //-->
  12.      </script>
  13.      <textarea name="fbContent" id="fbContent">textarea>
复制代码


2、使用FCKeditor 的 API

FCKeditor编辑器,提供了非常丰富的API,用于给End User实现很多想要定制的功能,比如最基本的数据验证,如何在提交的时候用JS判断当前编辑器区域内是否有内容,FCK的API提供了GetLength()方法;

再比如如何通过脚本向FCK里插入内容,使用InsertHTML()等;

还有,在用户定制功能时,中间步骤可能要执行FCK的一些内嵌操作,那就用ExecuteCommand()方法。

详细的API列表,请查看FCKeditor的Wiki。而常用的API,请查看FCK压缩包里的_samples/html/sample08.html。此处就不贴代码了。

3、外联编辑条(多个编辑域共用一个编辑条)

这个功能是2.3版本才开始提供的,以前版本的FCKeditor要在同一个页面里用多个编辑器的话,得一个个创建,现在有了这个外联功能,就不用那么麻烦了,只需要把工具条放在一个适当的位置,后面就可以无限制的创建编辑域了,如图



要实现这种功能呢,需要先在页面中定义一个工具条的容器:<div id="xToolbar"></div>,然后再根据这个容器的id属性进行设置。

ASP实现代码:

  1. <div id="fckToolBar"></div>
  2. <%
  3. Dim oFCKeditor
  4. Set oFCKeditor = New FCKeditor
  5. with oFCKeditor
  6. .BasePath = fckPath
  7. .Config("ToolbarLocation") = "Out:fckToolBar"

  8. .ToolbarSet = "Basic"
  9. .Width = "100%"
  10. .Height = "200"

  11. .Value = ""
  12. .Create "jcontent"

  13. .Height = "150"
  14. .Value = ""
  15. .Create "jreach"
  16. end with
  17. %>
复制代码

JAVASCRIPT实现代码:

  1. <div id="xToolbar"></div>
  2. FCKeditor 1:
  3. <script type="text/javascript">
  4. <!--
  5. // Automatically calculates the editor base path based on the _samples directory.
  6. // This is usefull only for these samples. A real application should use something like this:
  7. // oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
  8. var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;

  9. var oFCKeditor = new FCKeditor( 'FCKeditor_1' ) ;
  10. oFCKeditor.BasePath = sBasePath ;
  11. oFCKeditor.Height = 100 ;
  12. oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:parent(xToolbar)' ;
  13. oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using FCKeditor.' ;
  14. oFCKeditor.Create() ;
  15. //-->
  16. </script>
  17. <br />
  18. FCKeditor 2:
  19. <script type="text/javascript">
  20. <!--
  21. oFCKeditor = new FCKeditor( 'FCKeditor_2' ) ;
  22. oFCKeditor.BasePath = sBasePath ;
  23. oFCKeditor.Height = 100 ;
  24. oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:parent(xToolbar)' ;
  25. oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using FCKeditor.' ;
  26. oFCKeditor.Create() ;
  27. //-->
  28. </script>
复制代码



此部分的详细DEMO请参照_samples/html/sample11.html,_samples/html/sample11_frame.html

4、文件管理功能、文件上传的权限问题

一直以后FCKeditor的文件管理部分的安全是个值得注意,但很多人没注意到的地方,虽然FCKeditor在各个Release版本中一直存在的一个功能就是对上传文件类型进行过滤,但是她没考虑过另一个问题:到底允许谁能上传?到底谁能浏览服务器文件?

之前刚开始用FCKeditor时,我就出现过这个问题,还好NetRube(FCKeditor中文化以及FCKeditor ASP版上传程序的作者)及时提醒了我,做法是去修改FCK上传程序,在里面进行权限判断,并且再在fckconfig.js里把相应的一些功能去掉。但随之FCK版本的不断升级,每升一次都要去改一次配置程序fckconfig.js,我发觉厌烦了,就没什么办法能更好的控制这种配置么?事实上,是有的。

在fckconfig.js里面,有关于是否打开上传和浏览服务器的设置,在创建FCKeditor时,通过程序来判断是否创建有上传浏览功能的编辑器。首先,我先在fckconfig.js里面把所有的上传和浏览设置全设为false,接着我使用的代码如下:

ASP版本:

  1. <%
  2. Dim oFCKeditor
  3. Set oFCKeditor = New FCKeditor
  4. with oFCKeditor
  5. .BasePath = fckPath
  6. .Config("ToolbarLocation") = "Out:fckToolBar"

  7. if request.cookies(site_sn)("issuper")="yes" then
  8. .Config("LinkBrowser") = "true"
  9. .Config("ImageBrowser") = "true"
  10. .Config("FlashBrowser") = "true"
  11. .Config("LinkUpload") = "true"
  12. .Config("ImageUpload") = "true"
  13. .Config("FlashUpload") = "true"
  14. end if
  15. .ToolbarSet = "Basic"
  16. .Width = "100%"
  17. .Height = "200"

  18. .Value = ""
  19. .Create "jcontent"
  20. %>
复制代码



JAVASCRIPT版本:

  1.       var oFCKeditor = new FCKeditor( 'fbContent' ) ;
  2.       <%if power = powercode then%>
  3.       oFCKeditor.Config['LinkBrowser'] = true ;
  4.       oFCKeditor.Config['ImageBrowser'] = true ;
  5.       oFCKeditor.Config['FlashBrowser'] = true ;
  6.       oFCKeditor.Config['LinkUpload'] = true ;
  7.       oFCKeditor.Config['ImageUpload'] = true ;
  8.       oFCKeditor.Config['FlashUpload'] = true ;
  9.       <%end if%>
  10.       oFCKeditor.ToolbarSet = 'Basic' ;
  11.       oFCKeditor.Width = '100%' ;
  12.       oFCKeditor.Height = '200' ;
  13.       oFCKeditor.Value = '' ;
  14.       oFCKeditor.Create() ;
复制代码
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
找IvanQi的找我就行了,此号终于找回密码了.
生活新色彩
西部数码云主机4G内存500G仅需423元

番茄红了

金牌会员 手机认证 

帖子
1560
体力
4013
威望
41
居住地
广东省 广州市
发表于 2006-9-22 09:04:45 |显示全部楼层
这么好的帖子怎么能不顶~~
租服务器,上51IDC

使用道具 举报

子虚乌有

荣誉管理 手机认证 

帖子
8391
体力
26707
威望
187
居住地
江苏省 苏州市
发表于 2006-9-22 09:10:27 |显示全部楼层
昨天就想设置精华……犹豫中……不知道该给什么级别……



欢迎原创教程,而且对于这种应用广泛,但中文文档却相对较少的东东,更应该支持~~

使用道具 举报

宝疙瘩

高级会员

帖子
382
体力
850
威望
35
居住地
山西省 太原市
发表于 2006-9-22 09:19:47 |显示全部楼层

我来补充一下

在按钮旁边加文字
1打开
editor/js/ 两个js文件
  1. fckeditorcode_gecko.js
  2. fckeditorcode_ie.js
复制代码

第一个是支持非ie浏览器的
第二个文件是支持ie浏览器的

搜索 FCKToolbarButton

可以看到许多类似这样的语句
  1. case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;
复制代码



'Save'是按钮英文名字
FCKToolbarButton 的四个参数分别是:
按钮命令名称,按钮标签文字,按钮工具提示,按钮样式,按钮是否在源代码模式可见,按钮下拉菜单,
其中将第4项参数设置为 FCK_TOOLBARITEM_ICONTEXT 即可使按钮旁边出现文字,注意没有引号.
例如:
;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,FCK_TOOLBARITEM_ICONTEXT,true,null,5);
这样我们就可以将 我们经常用的3种模式源代码、预览、全屏编辑 按钮都加上文字了

ps:本来自己也想发一个,可是整理得不全。

[ 本帖最后由 mickeyboy 于 2006-9-22 09:37 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
蓝色 + 1 原创内容

总评分: 威望 + 1   查看全部评分

Extjs,JQuery
ibatis,glassfish
Dream,Eclipse

使用道具 举报

宝疙瘩

高级会员

帖子
382
体力
850
威望
35
居住地
山西省 太原市
发表于 2006-9-22 09:44:57 |显示全部楼层

补充

php快速上传问题
版本 fck2.3.1
使用php快速上传的时候有一个问题,如果你指定的是一个动态的路径,比如 upload/YYYMMMDD,那么当文件夹不存在的时候fck似乎不给你建立新文件夹。我加了几行代码才解决
/filemanager/upload/php/upload.php
97行插入
                if(!(file_exists($sServerDir) and is_dir($sServerDir)))
                {
                        mkdir($sServerDir,0777);
                   }

与表单验证程序配合使用
如果你同时使用了表单验证程序来检查输入的内容,可能会发现第一次提交的时候会提示“内容为空”。然后再点提交就好了。这是因为fck在第一次表单验证程序检查的时候还没有更新关联的文本框。我们需要手动关联一下

  1.             var oEditor = FCKeditorAPI.GetInstance('Content') ;//Content是fck实例的名称,也是表单文本框的名称
  2.         oEditor.UpdateLinkedField();
复制代码

[ 本帖最后由 mickeyboy 于 2006-9-22 16:01 编辑 ]
Extjs,JQuery
ibatis,glassfish
Dream,Eclipse

使用道具 举报

柠檬园主 楼主
帖子
70
体力
168
威望
40
居住地
辽宁省 大连市
发表于 2006-9-22 11:31:51 |显示全部楼层
多谢版主的支持,也同样感谢mickeyboy的补充,
之前发表过FCKEDITOR 2.0的使用,为了方便不了解FCK的朋友使用,下面贴出地址

FCKeditor 2.0在线编辑器的设置与修改以及使用:
1.http://3rgb.com/b/?act=viewthread&threadid=316
2.http://bbs.blueidea.com/viewthread.php?tid=2151586&page=

FCKeditor2.0在线编辑器的修改与设置-文件上传部分:
1.http://3rgb.com/b/?act=viewthread&threadid=324
2.http://bbs.blueidea.com/viewthread.php?tid=2165403&page=
找IvanQi的找我就行了,此号终于找回密码了.
生活新色彩

使用道具 举报

帖子
64
体力
144
威望
2
发表于 2006-9-22 13:02:52 |显示全部楼层
不错!顶

使用道具 举报

宝疙瘩

高级会员

帖子
382
体力
850
威望
35
居住地
山西省 太原市
发表于 2006-9-22 15:24:32 |显示全部楼层

解释fck样式的工作原理

fck的样式设置涉及到了两个文件,一个是你定义好的样式表文件.css,另一个是告诉fck样式表如何使用的xml文件,两个文件确一不可。
      css文件的位置是不做要求的,但是需要你在应用的编辑器的页面上插入样式表文件的链接。这样才能显示出来样式。
      fckstyles.xml 在与editor目录同级的目录下。该文件定义了那些样式可以使用在那些标签里面。
这就是fck自带的样式xml定义
  1. <?xml version="1.0" encoding="utf-8" ?>

  2. <Styles>
  3.         <Style name="Image on Left" element="img">
  4.                 <Attribute name="style" value="padding: 5px; margin-right: 5px" />
  5.                 <Attribute name="border" value="2" />
  6.                 <Attribute name="align" value="left" />
  7.         </Style>
  8.         <Style name="Image on Right" element="img">
  9.                 <Attribute name="style" value="padding: 5px; margin-left: 5px" />
  10.                 <Attribute name="border" value="2" />
  11.                 <Attribute name="align" value="right" />
  12.         </Style>
  13.         <Style name="Custom Bold" element="span">
  14.                 <Attribute name="style" value="font-weight: bold;" />
  15.         </Style>
  16.         <Style name="Custom Italic" element="em" />
  17.         <Style name="Title" element="span">
  18.                 <Attribute name="class" value="Title" />
  19.         </Style>
  20.         <Style name="Code" element="span">
  21.                 <Attribute name="class" value="Code" />
  22.         </Style>
  23.         <Style name="Title H3" element="h3" />
  24.         <Style name="Custom Ruler" element="hr">
  25.                 <Attribute name="size" value="1" />
  26.                 <Attribute name="color" value="#ff0000" />
  27.         </Style>
  28. </Styles>
复制代码

每一个<style>将来会生成一个样式的菜单项。name名称就是显示在菜单里的文字 ;element定义了该样式可以应用在那种html标签上,<Attribute>的 name 指定了将会修改标签的哪个属性来应用样式 ,value则是修改成的值
看这个
  1.         <Style name="Title" element="span">
  2.                 <Attribute name="class" value="Title" />
  3.         </Style>
复制代码

如果你在fck选定了文字 “经典论坛 » 前台制作与脚本专栏 » FCKeditor 实战技巧 - 1 » 编辑帖子” 应用该样式 则原来文字
就会变成<span class="Title">经典论坛 » 前台制作与脚本专栏 » FCKeditor 实战技巧 - 1 » 编辑帖子</span>

注意:如果编辑器呈整页编辑状态,那么整页里面也需要插入样式表链接才能显示出来样式。

[ 本帖最后由 mickeyboy 于 2006-9-22 15:38 编辑 ]
已有 1 人评分威望 收起 理由
蓝色 + 1 原创内容

总评分: 威望 + 1   查看全部评分

Extjs,JQuery
ibatis,glassfish
Dream,Eclipse

使用道具 举报

北菜园巷5号

高级会员

帖子
415
体力
1472
威望
3
发表于 2006-9-25 11:54:07 |显示全部楼层

FCKEDITOR 2.0 .net版的使用方法有吗

把你们的使用技巧说来听听,我下了一个FCKEDITOR 2.0.net但是用不了
我是虫子,一只一直在努力前进的虫子

使用道具 举报

luzhu 
帖子
165
体力
451
威望
0
发表于 2006-9-27 15:31:19 |显示全部楼层
楼主是矿大的校友,呵呵,被我看出来了

使用道具 举报

帖子
6
体力
19
威望
0
发表于 2006-9-27 17:37:58 |显示全部楼层
fckeditor 用半角 空格进行排版后,显示的时候界面会撑大,该怎样解决?我见楼主的BLOG上的FckEditor也有这 个问题。

使用道具 举报

宝疙瘩

高级会员

帖子
382
体力
850
威望
35
居住地
山西省 太原市
发表于 2006-10-17 17:13:37 |显示全部楼层

【问】使用FCKeditor添加文章时,在文章最后多了逗号。

【答】此情况发生在asp环境中。在asp里对于 提交的表单信息中如果有相同name属性的键值对  做‘逗号连接处理’
你们一定是使用了这样的js方法建立了编辑器
var oFCKeditor = new FCKeditor( 'editor' ) ;
oFCoFCKeditor.Create() ;
然后 又在同一个表单里面 添加了 一个id="editor" 或者 name ="editor"的 文本域
造成的!这样的话载入以后,实际上存在了两个 名称为editor表单控件了 所以在提交更新的时候,浏览器会出现逗号。

解决的方法是:第一种:不要在表单里面 添加 多余的 名为 editor 的文本域了
第二种:使用 fckeditor 的ReplaceTextarea()方法 :

window.onload = function()
{
       // Automatically calculates the editor base path based on the _samples directory.
       // This is usefull only for these samples. A real application should use something like this:
       // oFCKeditor.BasePath = '/fckeditor/' ;       // '/fckeditor/' is the default value.
       var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;

       var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
       oFCKeditor.BasePath       = sBasePath ;
       oFCKeditor.ReplaceTextarea() ;
}
具体的可以看 fckeditor的实例中的html实例第二个
Extjs,JQuery
ibatis,glassfish
Dream,Eclipse

使用道具 举报

帖子
164
体力
591
威望
3
发表于 2006-10-17 17:20:44 |显示全部楼层
厉害啊......................

使用道具 举报

帖子
2
体力
10
威望
0
发表于 2007-1-20 21:55:02 |显示全部楼层
这种富文本框还是很有用处的

使用道具 举报

帖子
138
体力
508
威望
0
居住地
浙江省 杭州市
发表于 2007-1-21 18:51:10 |显示全部楼层
fckconfig.js
可以自定义需要的工具按钮的模式
如只需显示源代码的功能
添加的
FCKConfig.ToolbarSets["Basic2"] = [
        ['Source']
] ;
没有广告

使用道具 举报

邂逅思维

中级会员

帖子
120
体力
284
威望
1
居住地
江苏省 宿迁市
发表于 2007-8-2 20:39:25 |显示全部楼层
官方都2.4版了,呵呵
给你们发个地址写的不错,各个版本的配置都有
http://soft.yesky.com/lesson/148/2623648.shtml

使用道具 举报

ciker 

见习刺客

银牌会员

帖子
1490
体力
2910
威望
5
居住地
山东省 烟台市
发表于 2007-8-2 22:33:51 |显示全部楼层
最不能介绍一下,和2.0版的区别。增加了哪 些功能?

使用道具 举报

帖子
1
体力
12
威望
0
发表于 2010-11-24 15:49:21 |显示全部楼层
谢谢!!!!!!!!!!!

使用道具 举报

帖子
13
体力
48
威望
0
居住地
江苏省 苏州市
发表于 2010-11-28 19:01:14 |显示全部楼层
这个帖子很不错希望楼主尽快出2、
不过我觉得楼主应该着重说明这个哪个语言环境下的配置。
我当初用这个的时候也花了很多心思。走了不少弯路

使用道具 举报

帖子
1
体力
2
威望
0
发表于 2011-5-24 17:15:06 |显示全部楼层
挺不错的!收藏了

使用道具 举报

帖子
256
体力
1097
威望
0
居住地
安徽省 合肥市
发表于 2011-5-24 20:45:19 |显示全部楼层
一直不知道还有这些,谢谢了,收藏

使用道具 举报

帖子
12
体力
22
威望
0
居住地
浙江省 杭州市
发表于 2011-5-25 16:53:26 |显示全部楼层
谢谢 我又学到了哦
网络公司

使用道具 举报

您需要登录后才可以回帖 登录 | 注册


Archiver|手机版|blueidea.com ( 京ICP备05002321号 )    

GMT+8, 2012-5-25 14:51 , Processed in 0.211532 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部