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

ck - 列表格式化与清除简析

阅读更多

ckeditor 的列表格式化与清除不同于 块状格式化(h1,h2),行内格式化(span),没有采用直接和range打交道(extractContent),可能由于列表很注重标签间的关系(并列与嵌套),变化也比较死板,ck 采用了与通用的块状格式化与行内格式化稍微不同的方法。


1.格式化


格式化前:

 

 

 

 

由于我们选中的range经过处理后,都是字或者包含字的元素边界,而列表化,即是将包含字的块状元素变为 ul li 结构,这包括两个方面:

 

1. 不能嵌套块状元素的节点,即选择区域直接的行内元素块状祖先,可转化为 li,所以第一步就是将选择区域分为一堆直接块状元素的集合,根据 xhtml dtd 1.0 (ck采用自动转换的js形式),可列出以下元素:

 

// Elements that may be considered the "Block boundary" in an element path.
    var pathBlockElements = { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,dd:1 };
 

(li dd在dtd中允许嵌套块状,但是具体在编辑过程中是不会出现这种情况下?在li中,列表格式化功能禁用,只能清除格式,具体待详解?可能li,dd都必须和ul,dl配对,不能随便打乱,所以这里当作直接块状元素,且不能被其他元素嵌套)



2.找出包含第一步的直接块状元素的可嵌套块状元素,这样的话,每一个可嵌套块状元素包含的直接块状元素最终转换为同一个ul下的一组li,并替换掉对应的直接块状元素集合。这里的可嵌套块状元素如:

 

// Elements that may be considered the "Block limit" in an element path.
    var pathBlockLimitElements = { body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,caption:1,form:1 };

 

转换后:

 

 

 

2.清除格式


清除格式前:

 

 

1.首先找出选择区域包含的 li 集合,如 li-2 ,li-3

2.找出包含选择li 集合距离 body 最近的 ul 根祖先(也可能是集合)

3.由于清除格式涉及到根 ul 大部分节点的整个缩进调整,不好进行细微dom操作以及后期合并,ck采用整个ul重新生成替换的做法

     3.1  从根ul的所有li节点,导出内存数组表示(listToArray): 扁平化处理,深度遍历,利用 缩进值和顺序来代表一棵树(在这种表示中,ul确实是多余的,故不包含)

     3.2  将清除格式的对应li的内存数组元素缩进值标志为 -1,并调整其后的li缩进值。

     3.3  从调整好缩进值的内存数组递归(深度遍历添加ul)构造出文档碎片(arrayToList):缩进值为-1的对应li,用p替换掉直接添加到当前递归层所属的文档碎片,否则复制 li 添加到当前递归层所属的ul (ul当然也属于文档碎片)。

     3.4 用3.3得到的文档碎片完全替换掉根ul,注意如果此时ul嵌套很深,内容很多时,会有明显屏幕闪烁。


最终结果:

 

 

还可以看 demo

 

 

 

 

 

  • 大小: 39.2 KB
  • 大小: 43.3 KB
  • 大小: 23.4 KB
  • 大小: 35 KB
分享到:
评论

相关推荐

    ck-slide淡入淡出效果的图片轮播插件

    7. **自定义设置**:开发者可以根据需求调整ck-slide的参数,如动画速度、图片间隙、导航点样式等,使其与网站的整体风格保持一致。 8. **易用性**:ck-slide的API接口清晰,文档详细,使得集成和调试变得简单,...

    长坤 CK-T1503 测温枪固件 H1故障修复

    长坤 CK-T1503 测温枪固件 ,开机提示H1 温度高,不一定是测温头坏,下载此固件写入 24C02 里面即可修复

    ck-video wordpress插件

    :ck-video,ck-video是一款wordre视频播放器插件,支持快速插入国内10多家视频网站的视频。由于是基于cklayer播放器开发的

    ck-300型微电脑温度控制仪

    CK-300型微电脑温度控制仪是一种专为纺织、印染行业设计的工业自动化控制设备,能够实现精确的温度自动控制。该控制仪在染色机的温度控制中起到关键作用,确保了染布过程中的温度稳定,对提升染色质量和节约能源有着...

    基于CK-CPU的Linux2.6实时性能优化.pdf

    然而,对于实时性要求极高的应用,如工业自动化、航空航天、通信设备等,Linux的标准内核在处理实时中断时可能存在一定的局限性,这限制了它在实时领域的应用。为了改善这一状况,本文提出了基于CK-CPU的Linux2.6...

    CK-300温控仪报告

    CK-300M3型高精度微电脑程序控制仪是一种专为温度控制设计的智能设备,由南昌航空大学信息工程学院开发,适用于多种领域的温度监测与管理。这款控温仪具备微型计算机技术,能够实现精确的温度测量与自动控制。 在...

    CK-LINK 原理图+pcb ULINK壳

    CK-LINK是一款嵌入式设备开发工具,常用于与微控制器进行通信,进行固件更新、数据采集或调试。在给定的资源中,“CK-LINK 原理图+pcb ULINK壳”包含了该设备的电路设计和硬件布局的重要信息。我们将详细探讨CK-LINK...

    CK-CPLD-EPM240程序效果说明.pdf

    CK-CPLD-EPM240 程序效果说明 CK-CPLD-EPM240 开发板是一个功能强大且灵活的数字系统开发板,旨在为初学者提供一个实践和学习的平台。该开发板集成了多种数字系统实验项目,涵盖了数字系统的基本概念、数字逻辑电路...

    CK-UR12-E00.zip

    【CK-UR12-E00.zip】是一个包含多种资源的压缩文件,主要涉及工业自动化领域的设备或系统。从文件名来看,我们可以推测这可能是一款名为"CK-UR12-E00"的智能设备或者控制器的相关文档和软件。下面我们将深入探讨其中...

    [信息办公]时机商计(CK-ERP) v0.16.1_ck-erp.zip

    [信息办公]时机商计(CK-ERP) v0.16.1_ck-erp.zip

    jquery实现多个过度风格的焦点图幻灯片插件ck-slide源码.zip

    3. JavaScript代码:ck-slide的JavaScript部分负责初始化插件、监听用户交互、控制过渡动画以及定时切换。jQuery的选择器和事件处理功能在此发挥了关键作用。 4. 过渡效果:ck-slide提供了多种过渡方式,如fade...

    [信息办公]时机商计(CK-ERP) v0.16.1_ck-erp.zip源码PHP项目源代码下载

    [信息办公]时机商计(CK-ERP) v0.16.1_ck-erp.zip源码PHP项目源代码下载[信息办公]时机商计(CK-ERP) v0.16.1_ck-erp.zip源码PHP项目源代码下载 1.适合个人搭建网站项目参考 2.适合学生毕业设计搭建网站参考 3.适合小...

    CK-CPLD-EPM240开发板原理图讲解.pdf

    CK-CPLD-EPM240 开发板原理图讲解.pdf CK-CPLD-EPM240 开发板是基于 ALTERA MAXII 系列的 EPM240T100C5N FPGA/CPLD 学习开发平台,提供了丰富的硬件资源和大量的实验例程,详细介绍了如何在本实验平台上完成各个...

    ck----硬件驱动

    硬件驱动是计算机操作系统与硬件设备之间的重要桥梁,它使得操作系统能够识别并控制各种硬件设备,如显卡、声卡、网卡、打印机等。在"ck----硬件驱动"的上下文中,提到的问题可能是针对某个特定的硬件设备,比如可能...

    基于CK-Core的处理器SDIO接口主控制器设计.pdf

    总结来说,文章详细探讨了基于CK-Core处理器的SDIO接口主控制器的设计与验证过程,强调了自主知识产权CPU核心在扩展功能上的重要性,并通过实际的硬件验证和综合结果,证明了设计的成功。这对于推动我国嵌入式处理器...

    jquery多过度风格的焦点图幻灯片代码插件ck-slide下载.zip

    通过JavaScript来初始化ck-slide,并可以设置各种参数来调整插件的行为。例如,你可以设置过渡效果类型、自动播放、导航按钮等。 ```javascript $(document).ready(function() { $('#slider').ckSlide({ effect: ...

    CK-QW-HR-16员工福利与实施细则(征询稿).doc

    CK-QW-HR-16员工福利与实施细则(征询稿).doc

    CK-21中文操作说明书.pdf

    在上述内容中,我们可以提取出一系列关于CK-21珩磨机使用与操作的知识点。 首先是机床的安装总则,对于SUNNEN CK-21立式机床在拆箱、检查和安装过程中的注意事项进行了说明。首先需要对照装箱清单检查机床和所有零...

    LT1083CK-12

    - **名称与功能**:LT1083CK-12是一款三端固定低压差线性稳压器,属于LT1083系列之一,主要功能是提供稳定的电压输出,适用于多种电源管理应用。 - **型号差异**: - LT1083:最大输出电流为7.5A。 - LT1084:最大...

Global site tag (gtag.js) - Google Analytics