zoukankan      html  css  js  c++  java
  • CKEDITOR (FCKEDITOR) --- 目前最优秀的可见即可得网页编辑器之一

    FCKEDITOR

     编辑

    同义词 CKEditor一般指FCKEDITOR

    FCKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多WEB项目和大型网站均采用了FCKeditor。
    FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得文字编辑器。它志于轻量化,不需要太复杂的安装步骤即可使用。它可和PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java、以及ABAP等不同的编程语言相结合。“FCKeditor”名称中的“FCK” 是这个编辑器的作者的名字Frederico Caldeira Knabben的缩写。
    FCKeditor 相容于绝大部分的网页浏览器,像是 : Internet Explorer 5.5+(Windows)、Mozilla Firefox 1.0+、Mozilla 1.3+ 和Netscape 7+。在未来的版本也将会加入对 Opera的支持。
    FckEditor更名CKEditor
    著名的开源网页编辑软件FCKEditor在09年发布更新到3.0,并改名为CKEditor。原来叫FCK,是因为最初的开发者叫Frederico Calderia Knabben;现在叫CK,意指"Content and Knowledge"。新版的编辑器的更新包括:新的用户界面,一个支持Plug-in的Javascript API,并提供对视觉障碍者的使用支持。"
    据官方的解释,CK是对FCK的代码的完全重写,而且此项工作从2007年就开始了,并在今年初发表了多个测试版。至此,为大家服务长达6年的FCKeditor将被CKeditor替代。
    中文名
    网页编辑器
    外文名
    FCKeditor
    兼容性
    相容于绝大部分的网页浏览器
    更    名
    CKEditor
    属    性
    网页编辑器
     

    中文解释编辑

    AutoDetectLanguage=true/false 自动检测语言
    BaseHref="" 相对链接的基地址
    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标记

    调用种类编辑

    在ASP dot NET中调用
    在ASP dot NET中调用其实是很简单的事,FCKEditor有一个FCKeditor dot Net (一个ASP dot NET 服务器控件),可以很容易地与ASP dot NET集成。
    首先去FCKEditor官网下载FCKEditor和FCKeditor dot Net服务器控件。
    按以下步骤在ASP dot NET页面是调用:
    1、为ASP dot NET应用程序添加FCKeditor dot Control的引用。
    方法一、解压FCKeditor dot Net,在Visual Sutdio的工具箱中右击→添加项目,在打开的对话框中点击“浏览”按钮,定位到解压后的FCKeditor dot Net控件的inRelease2.0下的FredCK.FCKeditorV2.dll文件,点击确定。此时,Visual Studio的工具箱中就会出现FCKEditor,就要以像其他控件一样使用了。
    方法二、把inRelease2.0下的FredCK.FCKeditorV2.dll文件复制到ASP dot NET应用程序的Bin文件夹下,然后在要调用FCKEditor的.aspx页面中添加一条注册指令<%@ Register Assembly="FredCK.FCKeditorV2" Namespace="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>就可以使用了。
    <FCKeditorV2:FCKeditor ID="FCKeditor1" runat="server">
    </FCKeditorV2:FCKeditor>
    但是,如果就这样访问页面的话,FCKEditor所在的区域将会出现404(File Not Found)的错误。这是因为还没有FCKEditor所要使用的资源文件。请看下一步:
    2、指定资源文件的位置
    把下载到的FCKEditor解压到你的ASP dot NET应用程序下的任意位置,如应用程序根目录下的fckeditor。然后修改页面中控件的声明为:
    <FCKeditorV2:FCKeditor ID="FCKeditor1" runat="server" BasePath="~/fckeditor/">
    </FCKeditorV2:FCKeditor>
    这里的BasePath用来指定FCKEditor资源文件(其中包含有JavaScript脚本、用于显示FCKEditor工具栏的PNG图片等)的位置,其值取决于你把FCKEditor解压的位置。
    以上步骤完成后,你将在.aspx页面中看到FCKEditor的庐山真面目。
    在PHP中调用
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <?php
    functionFCKeditor_IsCompatibleBrowser()
    {
    if(isset($_SERVER)){
    $sAgent=$_SERVER['HTTP_USER_AGENT'];
    }
    else{
    global$HTTP_SERVER_VARS;
    if(isset($HTTP_SERVER_VARS)){
    $sAgent=$HTTP_SERVER_VARS['HTTP_USER_AGENT'];
    }
    else{
    global$HTTP_USER_AGENT;
    $sAgent=$HTTP_USER_AGENT;
    }
    }
    if(strpos($sAgent,'MSIE')!==false&&strpos($sAgent,'mac')===false&&strpos($sAgent,'Opera')===false)
    {
    $iVersion=(float)substr($sAgent,strpos($sAgent,'MSIE')+5,3);
    return($iVersion>=5.5);
    }
    elseif(strpos($sAgent,'Gecko/')!==false)
    {
    $iVersion=(int)substr($sAgent,strpos($sAgent,'Gecko/')+6,8);
    return($iVersion>=20030210);
    }
    elseif(strpos($sAgent,'Opera/')!==false)
    {
    $fVersion=(float)substr($sAgent,strpos($sAgent,'Opera/')+6,4);
    return($fVersion>=9.5);
    }
    elseif(preg_match("|AppleWebKit/(d+)|i",$sAgent,$matches))
    {
    $iVersion=$matches[1];
    return($matches[1]>=522);
    }
    else
    returnfalse;
    }
    classFCKeditor
    {
    public$InstanceName;
    public$BasePath;
    public$Width;
    public$Height;
    public$ToolbarSet;
    public$Value;
    public$Config;
    publicfunction__construct($instanceName)
    {
    $this->InstanceName=$instanceName;
    $this->BasePath='../common/editor/';
    $this->Width='100%';
    $this->Height='400';
    $this->ToolbarSet='Default';
    $this->Value='';
    $this->Config=array();
    }
    publicfunctionCreate()
    {
    echo$this->CreateHtml();
    }
    publicfunctionCreateHtml()
    {
    $HtmlValue=htmlspecialchars($this->Value);
    $Html='';
    if($this->IsCompatible())
    {
    if(isset($_GET['fcksource'])&&$_GET['fcksource']=="true")
    $File='fckeditor.original.html';
    else
    $File='fckeditor.html';
    $Link="{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}";
    if($this->ToolbarSet!='')
    $Link.="&amp;Toolbar={$this->ToolbarSet}";
    $Html.="<inputtype="hidden"id="{$this->InstanceName}"name="{$this->InstanceName}"value="{$HtmlValue}"style="display:none"/>";
    $Html.="<inputtype="hidden"id="{$this->InstanceName}___Config"value="".$this->GetConfigFieldString().""style="display:none"/>";
    $Html.="<iframeid="{$this->InstanceName}___Frame"src="{$Link}"width="{$this->Width}"height="{$this->Height}"frameborder="0"scrolling="no"></iframe>";
    }
    else
    {
    if(strpos($this->Width,'%')===false)
    $WidthCSS=$this->Width.'px';
    else
    $WidthCSS=$this->Width;
    if(strpos($this->Height,'%')===false)
    $HeightCSS=$this->Height.'px';
    else
    $HeightCSS=$this->Height;
    $Html.="<textareaname="{$this->InstanceName}"rows="4"cols="40"style="{$WidthCSS};height:{$HeightCSS}">{$HtmlValue}</textarea>";
    }
    return$Html;
    }
    publicfunctionIsCompatible()
    {
    returnFCKeditor_IsCompatibleBrowser();
    }
    publicfunctionGetConfigFieldString()
    {
    $sParams='';
    $bFirst=true;
    foreach($this->Configas$sKey=>$sValue)
    {
    if($bFirst==false)
    $sParams.='&amp;';
    else
    $bFirst=false;
    if($sValue===true)
    $sParams.=$this->EncodeConfig($sKey).'=true';
    elseif($sValue===false)
    $sParams.=$this->EncodeConfig($sKey).'=false';
    else
    $sParams.=$this->EncodeConfig($sKey).'='.$this->EncodeConfig($sValue);
    }
    return$sParams;
    }
    publicfunctionEncodeConfig($valueToEncode)
    {
    $chars=array(
    '&'=>'%26',
    '='=>'%3D',
    '"'=>'%22');
    returnstrtr($valueToEncode,$chars);
    }
    }
    $editor=newFCKeditor('editor');//接收时$_POST['........']中的内容
    $editor->BasePath="../common/editor/";//FCKEDITOR的路径
    ?>
    在需要调用的地方<?php $editor->Create();?>
    接受的文件用$_POST['editor']调用(editor)可在$editor = new FCKeditor('editor')设置
    在Asp中调用
    首先在文件顶部包含主文件
    <!--#include file="../fckeditor.asp"-->
    在适当的地方插入文本区域内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%
    DimoFCKeditor
    SetoFCKeditor=NewFCKeditor
    oFCKeditor.ToolbarSet="A"’使用工具条
    oFCKeditor.Width="100%"’宽度
    oFCKeditor.Height="400"’高度
    oFCKeditor.Value=’源文件
    oFCKeditor.Create"content"’文本框名称
    %>
    在JSP中调用
    web.xml配置:
    FckEditor for java 2.4版本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <servlet>
    <servlet-name>Connector</servlet-name>
    <servlet-class>
    net.fckeditor.connector.ConnectorServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>Connector</servlet-name>
    <url-pattern>
    /fckeditor/editor/filemanager/connectors/*
    </url-pattern>
    </servlet-mapping>
    在JSP中使用标签调用demo:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
    <%@tagliburi="http://java.fckeditor.net"prefix="FCK"%>
    <html>
    <head>
    <title>FckEditor测试</title>
    </head>
    <bodystyle="text-align:center;">
    FckEditor测试
    <hr>
    <formaction="ShowData.jsp"method="post">
    <FCK:editorinstanceName="test"height="400pt">
    <jsp:attributename="value">这里是http://baike.baidu.com/">数据测试
    </jsp:attribute>
    </FCK:editor>
    <inputtype="submit"value="提交"/>
    <inputtype="reset"value="重置"/>
    </form>
    </body>
    </html>

    工具条编辑

    /* Source="页面源码"
    DocProps="页面属性"
    Save="保存"
    NewPage="新建"
    Preview="预览"
    Templates="模版"
    Cut="剪切"
    Copy="拷贝"
    Paste="粘贴"
    PasteText="粘贴为无格式的文本"
    PasteWord="粘贴Word格式"
    Print="打印"
    SpellCheck="拼写检查,要装插件"
    Undo="撤消"
    Redo="重做"
    Find="查找"
    Replace="替换"
    SelectAll="全选"
    RemoveFormat="清除格式(清除现在文本的格式)"
    Form="表单域"
    Checkbox="复选"
    Radio="单选"
    TextField="单行文本"
    Textarea="多行文本"
    Select="列表"
    Button="按钮"
    ImageButton="图像区域"
    HiddenField="隐藏域"
    Bold="加粗"
    Italic="倾斜"
    Underline="下划线"
    StrikeThrough="删除线"
    Subscript="下标"
    Superscript="上标"
    OrderedList="删除/插入项目列表"
    UnorderedList="删除/插入项目符号"
    Outdent="减少缩进"
    Indent="增加缩进"
    JustifyLeft="左对齐"
    JustifyCenter="居中对齐"
    JustifyRight="右对齐"
    JustifyFull="分散对齐"
    Link="链接"
    Unlink="删除链接"
    Anchor="插入/删除锚点"
    Image="上传图片"
    Flash="上传动画"
    Table="插入表格"
    Rule="插入水平线"
    Smiley="插入表情"
    SpecialChar="插入特殊字符"
    PageBreak="插入分页符"
    Style="样式"
    FontFormat="格式"
    FontName="字体"
    FontSize="大小"
    TextColor="字体颜色"
    BGColor="背景色"
    FitWindow="全屏编辑"
    About="关于我们"
    */
    也就是fckeditor总配置文件,位于根目录下的fckconfig.js文件。请根据下面的列表进行(以fckeditor 2.0版的为准):找到第20行 FCKConfig.DefaultLanguage = 'en' ;改为 FCKConfig.DefaultLanguage = 'zh-cn' ;设置默认语言为简体中文
    找到第40行 FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键。
    如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了,在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic,也就是基本的toolbar,
    找到第64行:
    FCKConfig.ToolbarSets["Basic"] = [
    ['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-','Smiley','SpecialChar','Replace','Preview']
    ] ;
    这是我改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台页直接访问和上传文件,要是这儿不改直接给你上传个木马还不马上玩完?
    以下为全部显示工具栏显示的示例:
    FCKConfig.ToolbarSets["Default"] = [//Default工具条的名称
    [’Source’,’DocProps’,’-’,’Save’,’NewPage’,’Preview’,’-’,’Templates’],
    [’Cut’,’Copy’,’Paste’,’PasteText’,’PasteWord’,’-’,’Print’,’SpellCheck’],
    [’Undo’,’Redo’,’-’,’Find’,’Replace’,’-’,’SelectAll’,’RemoveFormat’],
    [’Form’,’Checkbox’,’Radio’,’TextField’,’Textarea’,’Select’,’Button’,’ImageButton’,’HiddenField’],
    ’/’,
    [’Bold’,’Italic’,’Underline’,’StrikeThrough’,’-’,’Subscript’,’Superscript’],
    [’OrderedList’,’UnorderedList’,’-’,’Outdent’,’Indent’],
    [’JustifyLeft’,’JustifyCenter’,’JustifyRight’,’JustifyFull’],
    [’Link’,’Unlink’,’Anchor’],
    [’Image’,’Flash’,’Table’,’Rule’,’Smiley’,’SpecialChar’,’PageBreak’],
    ’/’,
    [’Style’,’FontFormat’,’FontName’,’FontSize’],
    [’TextColor’,’BGColor’],
    [’FitWindow’,’-’,’About’]
    ] ;
    用户根据需要自行配置
    //去除超链接选显卡 上传
    // config.removeDialogTabs = "link:upload;image:Upload";
    //去除超链接选显卡 目标
    //config.removeDialogTabs = "image:advanced;link:target;"
    //去除超链接选显卡 目标 高级 上传 去除flash目标上传
    config.removeDialogTabs = "link:advanced;link:target;image:advanced;image:target;link:upload;image:Upload;flash:advanced;image:Link;flash:upload;flash:Upload";
  • 相关阅读:
    Ethical Hacking
    Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    食物链 POJ
    Wireless Network POJ
    Candies POJ
    畅通工程再续 HDU
    Jungle Roads HDU
  • 原文地址:https://www.cnblogs.com/wzhanke/p/4778602.html
Copyright © 2011-2022 走看看