`
yiminghe
  • 浏览: 1460262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ckeditor 源码概述

阅读更多

ckeditor是目前各个浏览器间比较统一的富文本编辑器,相对于 yui2 editor ,其更注重兼容性问题,花了很大力气实现了等价于  w3c range 的功能,并且完全不采用  document.execCommand 这一浏览器的原生功能(兼容性问题严重),仅仅依赖dom操作来分隔节点与插入格式化标签到对应位置。



源码概述:


通过引入最小的种子文件ckeditor_source.js,即可通过模块依赖计算动态加载完整的编辑器功能代码:

 

<textarea id="t"></textarea>
<script type="text/javascript" src="ckeditor_source.js"></script>
<script type="text/javascript">
CKEDITOR.replace("t");
</script>
 

包括:


ckeditor_source.js:定义CKEDITOR命名空间以及编辑器实例容器,启动动态加载
_source/core/loader.js:定义代码模块依赖以及动态加载机制
_source/core/event.js:自定义事件机制
_source/core/editor_basic.js:编辑器类定义
_source/core/env.js:浏览器探测机制
_source/core/ckeditor_basic.js:通过CKEDITOR快捷创建ckeditor实例到等待列表
_source/core/dom.js:定义dom基础类空间
_source/core/tools.js:语言级基础工具类库
_source/core/dtd.js:javascript表达的官方规范:xhtml1-transitional.dtd,
core/dom/*.js:dom基础类库,富含dom修改与遍历操作
例如:
    _source/core/dom/elementpath.js:节点路径标识
    _source/core/dom/range.js:等价w3c range 利用 dom操作的javascript实现

_source/core/command.js:编辑器命令抽象统一
_source/core/config.js:所有编辑器的公共配置
_source/core/focusmanager.js:多编辑器间焦点管理
_source/core/lang.js:多语言载入与探测
_source/core/scriptloader.js:脚本动态载入基础库
_source/core/resourcemanager.js:统一的资源管理与加载容器
_source/core/plugins.js:插件资源管理与加载容器
_source/core/skins.js:皮肤(js,css)管理与加载容器
_source/core/themes.js:主题(功能,皮肤)管理与加载容器
_source/core/ui.js:编辑器实例的整体ui与feature管理
_source/core/editor.js:编辑器类完整功能与实例相关资源加载初始化代码
htmlparser/*.js :编辑器代码整理去冗parser
_source/core/ckeditor.js:编辑器管理类完善与调用_bootstrap.js启动实例初始化
_source/core/_bootstrap.js:加载核心插件后初始化等待的编辑器实例
调用editor.js初始化等待的编辑器实例
skins/*.js:皮肤定义
lang/*.js:操作语言定义

plugin/*/plugin.js:插件代码,监听编辑器实例事件,附加操作到各个编辑器。

例如:
        font/plugin.js:字体样式处理
        colorbutton/plugin.js:前景背景处理
        selection/plugin.js:原生range与ckeditor range的相互转化
        styles/plugin.js:利用range对格式代码进行定位插入操作。


plugin/dialog/*.js:插件按需加载的输入对话框功能代码

重要代码图解:

 

关键为:


core/dom/range.js

core/dom/walker.js

plugin/styles/plugin.js

 

 

 

 

  • 大小: 53.1 KB
分享到:
评论
6 楼 wooodyhuang 2011-03-21  
binoruv 写道
在extjs里用Ext.ux.ScriptLoader.js动态加载ckeditor.js会出现 'container.getChild(...)' 为空或不是对象,

直接在网页中引用ckeditor.js关闭编辑窗口时会出现'container.getChild(...)' 为空或不是对象。

我用的是一个网上找的扩展Ext.form.CKEditor.js,太崩溃了。



我使用的是struts2-jqeury插件集成的,在IE8中碰到一样的问题
5 楼 yiminghe 2010-10-22  
binoruv 写道
yiminghe 写道
binoruv 写道
在extjs里用Ext.ux.ScriptLoader.js动态加载ckeditor.js会出现 'lang.contextmenu.options' 为空或不是对象


试试 kissy editor

http://kissyteam.github.com/kissy-editor/demo/static-min-test.html

搞定了 ,kissy editor这个东东是免费的么?


是的
4 楼 binoruv 2010-10-22  
yiminghe 写道
binoruv 写道
在extjs里用Ext.ux.ScriptLoader.js动态加载ckeditor.js会出现 'lang.contextmenu.options' 为空或不是对象


试试 kissy editor

http://kissyteam.github.com/kissy-editor/demo/static-min-test.html

搞定了 ,kissy editor这个东东是免费的么?
3 楼 yiminghe 2010-10-21  
binoruv 写道
在extjs里用Ext.ux.ScriptLoader.js动态加载ckeditor.js会出现 'lang.contextmenu.options' 为空或不是对象


试试 kissy editor

http://kissyteam.github.com/kissy-editor/demo/static-min-test.html
2 楼 binoruv 2010-10-21  
在extjs里用Ext.ux.ScriptLoader.js动态加载ckeditor.js会出现 'lang.contextmenu.options' 为空或不是对象
1 楼 binoruv 2010-10-21  
在extjs里用Ext.ux.ScriptLoader.js动态加载ckeditor.js会出现 'container.getChild(...)' 为空或不是对象,

直接在网页中引用ckeditor.js关闭编辑窗口时会出现'container.getChild(...)' 为空或不是对象。

我用的是一个网上找的扩展Ext.form.CKEditor.js,太崩溃了。

相关推荐

    ckeditor4.2.2自定义配置

    1. **CKEditor概述** CKEditor是一个开源的JavaScript库,提供了一种在网页上创建和编辑富文本内容的解决方案。它支持WYSIWYG(所见即所得)编辑,允许用户像在桌面应用程序中那样编辑文本,包括字体、颜色、样式、...

    django-ckeditor

    **一、Django CKEditor 概述** Django CKEditor 是一个用于 Django Web 框架的富文本编辑器插件,它提供了功能丰富的文本编辑功能,使用户在网站后台或者前端能够方便地进行格式化文本输入。CKEditor 是一个广泛使用...

    ckeditor-5 支持H5 player

    1. **CKEditor 5 概述** CKEditor 5 是由CKSource公司开发的新一代富文本编辑器,它采用了模块化设计,支持自定义构建,可以根据项目需求选择需要的功能。其设计理念是提供一个易于使用的界面,同时保持高度可定制...

    ckeditor_4.18.0_basic.zip

    一、CKEditor 4.18.0 Basic版概述 CKEditor 4.18.0 Basic版的核心特点是简洁与高效,它去除了高级功能,保留了基础的文本编辑工具,如字体样式调整、段落格式化、链接插入等,使得网页内容创建变得更加简单。这个...

    基于Java的实例源码-CKFinder文件管理器for Java.zip

    1. **CKFinder概述**:CKFinder是CKEditor的配套文件管理工具,主要负责与CKEditor集成,提供图像、文件的上传和选择功能。它支持多种文件类型,并且具有多语言界面,易于定制和扩展。 2. **Java版本的CKFinder**:...

    ajaxplorer-core源码

    ### 一、Ajaxplorer概述 Ajaxplorer的主要特点是利用AJAX技术实现无刷新的文件操作,提供了一个类似Windows资源管理器的界面,使用户可以轻松浏览、上传、下载、移动、重命名和删除文件,以及创建和管理文件夹。...

    ckedit 替换表情

    **一、CKEditor 概述** CKEditor 是一款功能强大的富文本编辑器,广泛应用于网站内容管理、博客系统、论坛等在线文本输入场景。它提供了一套完善的API,允许开发者进行高度自定义,以满足不同项目的需求。CKEditor ...

    基于Java的实例开发源码-CKFinder文件管理器for Java.zip

    CKFinder是一款轻量级的文件管理工具,最初设计用于与富文本编辑器CKEditor配合使用。它提供了用户友好的界面,可以浏览、上传、删除和重命名文件或文件夹。CKFinder支持多种文件类型,并具有权限控制功能,适合...

    asp.net在线文本编辑器

    一、在线文本编辑器的概述 在线文本编辑器,也称为富文本编辑器,是基于Web的界面,用户可以通过它直接在网页上编辑文本,同时支持添加图片、链接、表格等复杂格式。这些编辑器通常使用JavaScript或HTML5技术实现...

    FredCK.FCKeditorV2 文本输入第三方控件

    FCKeditorV2概述 FCKeditorV2 提供了一个类似桌面文字处理软件的界面,用户可以直接在网页上进行文本编辑、格式化、插入图片、超链接、表格等操作,极大地提升了网页内容创作的便捷性。它支持多种浏览器,包括...

    FCK使用

    通常,描述部分会包含一些关于博客内容的简短概述,比如FCKeditor的主要功能、遇到的问题、解决方案或者是使用技巧等。由于没有实际的描述内容,我们只能根据标题和标签来推测文章可能涉及的内容。 标签包括"源码...

    java博客后台管理系统.rar

    一、Java技术栈概述 Java作为一款跨平台的编程语言,广泛应用于企业级应用开发,尤其在Web领域有着深厚的基础。本系统主要采用了Java EE(Enterprise Edition)标准,包括Servlet、JSP、JDBC等核心技术,构建了一个...

    django-blog:这是用django制作的Blogging网站

    CKeditor集成的RichTextEditor 页数 主页此页面的UI使用顺风CSS创建。 在UNSPLASH API的帮助下添加图像的位置。 该页面包括整个网站的概述。 BLog这是您可以查看所有最近帖子的页面。 您也可以根据需要创建自己的...

    文本编辑器

    在提供的文件列表中,我们看到有"总结.doc",这可能是关于FCKeditor的使用心得或者功能总结,通常包含对编辑器主要特性和功能的概述。"FCKeditor_2.3.1.zip"是FCKeditor的一个旧版本,版本号2.3.1,其中可能包含了...

    fckeditor文档编辑器插件

    随着技术的发展,fckeditor后来被CKEditor所取代,CKEditor在继承了fckeditor优点的同时,进一步增强了性能和稳定性,增加了更多的特性,并且保持了良好的社区支持和持续更新。 总之,fckeditor作为一款经典的Web...

    ueditor.zip

    一、UEditor概述 UEditor由百度公司开发,旨在提供一个轻量级、高效的在线编辑环境,支持HTML5特性,兼容主流浏览器。它具有丰富的插件体系,可以满足多样化的编辑需求,如图片上传、视频插入、表格编辑等。此外,...

    fckeditor在线编辑器

    **概述** fckeditor是一款开源的Web富文本编辑器,它允许用户在网页上创建和编辑富文本内容,如HTML文档。这个编辑器支持多种浏览器,包括Internet Explorer、Firefox、Chrome和Safari,为网站提供了一个功能强大的...

    fckeditor 2.6.4 完整版

    **一、FCKeditor概述** FCKeditor是由Fernando Gouveia创建的,它支持多种浏览器,包括Internet Explorer、Firefox、Safari、Chrome和Opera等。这款编辑器使用JavaScript编写,遵循WYSIWYG(所见即所得)原则,允许...

    功能强大的jsp版FCKeditor编辑器控件+使用例子

    **FCKeditor编辑器概述** FCKeditor是一款开源的、基于JavaScript的富文本编辑器,它为Web开发者提供了在网页中创建类似Word的编辑体验。该编辑器支持多种浏览器,包括Internet Explorer、Firefox、Chrome和Safari...

    WindyNote:简单的单机笔记本

    **概述** WindyNote是一款由C++语言开发的轻量级单机笔记本软件,它采用Visual Studio 2013作为集成开发环境,并结合Qt 5.3.1框架进行图形用户界面的设计。这个项目的主要目标是提供一个简洁易用的笔记记录工具,让...

Global site tag (gtag.js) - Google Analytics