经过2年时间的沉寂,inEdit 又开始进行开发了,上一次停止开发,主要原因是
- 工作了,没时间开发,现在失业中,终于又有时间了
- 问题太多,没有找到好的解决方案
最近通过学习 CKEditor 和 UEditor 获得了一些思路,整理如下
主要兼容性问题
- range
也就是选择区域范围问题,必须处理成一致的接口和对边界进行处理,对于IE可以考虑使用 ierange
但是 ierange 有个BUG需要注意,在某些场景下获取 range text会出错
BUG更多无法用,采取UEditor的吧
- 回车
各个浏览器中差异很大,为了得到一致性有必要截获回车事件并通过代码来处理回车
问题衍生,如果选择了某个区域,那其实要先做删除处理,这个问题 UEditor 采用自己的代码完成
inEdit目前暂时使用 document.execCommand('delete',false,null); 解决,是否会造成一致性问题,目前未知
- 粘贴html
浏览器间的行为差异很大,因此需要对此进行一致性处理,主要问题表现在标签结构和style属性上,如何处理inEdit还没有确定,CKEditor 和 UEditor对标签结构处理的很好,但是在 chrome下style没有进行很好的处理
- 原生execCommand
这其实包括了所有的操作,加粗,颜色,列表,缩进,所有这些其实浏览器间都不兼容,如果要兼容需要重写代码实现这些功能,这衍生出了下面的问题
- 节点分割
因原生execCommand的问题,需要对节点进行分割
- fake对象
fake对象就是伪对象,在编辑期插入一个视频,为了操作的方便通常都通过一个fakeImg来实现,UEditor,CKEditor对fake对象都采用了,用在属性上嵌入html代码的方法,UEditor对一些baidu的产品,比如百度地图的伪对象进行了特殊处理,inEdit 预期对fake进行非嵌入html代码的处理
- 表格,图片
浏览器中兼容性差异巨大,需要特殊处理,表格的高级特性更是需要大量的代码处理
- 禁止从外部拖拽
- 右键菜单必须被处理
好的解决方案
- 对话框
UEditor把对话框作为独立的html用iframe的方式是很佳的方案
- 截获粘贴
UEditor plugins/paste/paste.js 的解决方案非常优秀
- html解析
UEditor和CKEditor都有自己的html解析,inEditor计划采用 simplehtmlparser
有BUG无法用,采取UEditor的吧
- 事件模型
这个就是api里面的addEvent,fire这些操作
inEdit计划采用的一些方案
- 继续采用 contenteditable="true"
这也是为什么写 inEdit 的原因,不然inEdit就没有存在的意义了
- 样式模块
inEdit 把样式的操作独立出来,作为基础模块供需求使用
- 单个引用文件,动态加载需求文件
这个不但在开发期还是部署,都会提供一些方便,而且和完全打包是兼容的
- 所有功能都采用 plugin 模式,取消原生execCommand,完全用节点操作完成(delete问题待定)
原因如上述
- 暂时借助jQuery
为了提高开发速度,对于DOM的操作借助jQuery,当稳定以后可以考虑设计独立的模块替代相关功能
目前的开发进度,事件模型、基础框架、fake对象已经成型,进入替代原始execCommand阶段,inEditor要被重构了
=============================================
2011.8.31
对w3c的html定义要完全过一遍了,零零碎碎太多,又是上下文,有所内容模型的,一个个来吧,先做内容模型定义,这就是个dtd了,开发成本太高了。没办法,发现其他版本的dtd定义都不够仔细,而且为了适应编辑器的需求,有必要对w3c的定义做些细微调整,以便简化操作
2011.11.01
发现mercury已经实现了,考虑直接采用mercury
2011.8.30
遇到太多失败,都不确定是否能完成了
分享到:
相关推荐
mercury, 水银编辑器 汞编辑器 Mercury编辑器是一个非常有特色的编辑器,非常像TinyMCE或者 CKEditor,但是使用了不同的用法模式。 它期望整个页面是可以编辑的,并且允许指定不同类型的可以编辑区域。 在页面的每一...
Mercury SiteScope是一种为...SiteScope也充当其他Mercury产品(如Mercury BAC, MMS, LoadRunner)基础的监视器。SiteScope可以为您提供您需要的基础部件的实时信息,提供问题的通知,以便能在问题变棘手之前及时解决。
《深入解析Mercury LoadRunner使用手册》 一、引言:LoadRunner——性能测试的卓越工具 Mercury LoadRunner是一款由Micro Focus(前身为Mercury Interactive Corporation)开发的负载测试工具,广泛应用于软件性能...
这种编辑器通常被称为WYSIWYG(What You See Is What You Get)编辑器,因为它提供了所见即所得的编辑体验。用户可以通过拖放、点击和输入文本等方式在界面上操作,编辑器会自动生成相应的HTML标记。 在HTML可视化...
**Mercury SiteScope 使用手册** Mercury SiteScope 是一款强大的监控工具,主要用于企业级的IT基础设施和服务性能管理。它能够实时监测服务器、网络设备、应用性能,并提供详细的报告,帮助IT管理员快速识别并解决...
从给定的文件信息来看,这是一份与Mercury Computer Systems相关的用户指南文档,主要包含了公司的联系信息、版权声明、免责声明以及对OpenGL®和OpenInventor™的使用授权信息。下面将根据这些内容深入解析其中涉及...
邮件服务器Mercury的设置方法涵盖了从基础配置到高级设置的整个过程,以下详细知识点按照步骤逐一展开。 1. 启动Apache和MySQL服务是安装和配置邮件服务器的前提条件。Apache服务器用于托管Web应用,而MySQL是一个...
您还可以编辑自己的快速链接以便直接访问常用地址。 强大功能---插件、用户代理、手势控制、 自动填充表单等等功能使您的网页浏览变得更加简便。 安全保护--- Mercury浏览器的诸多安全功能能保护您的个人隐私不被...
Mercury II编码器产品手册pdf,Mercury II编码器产品手册
- **产品背景**:Mercury Quality Center(简称QC)是由Mercury Interactive Corporation开发的一款功能强大的测试管理平台。Mercury公司后来被惠普(HP)收购,使得QC成为了HP软件产品线中的重要组成部分。 - **...
1. **安装与配置**:下载并解压"mercury-master"压缩包,按照官方文档设置开发环境,包括Java、Android SDK等相关工具。 2. **APK文件导入**:将待检测的Android应用APK文件导入到Mercury中。 3. **执行扫描**:...
《Androguard扩展库Mercury-v1.1详解》 Androguard,作为一个强大的开源工具集,被广泛用于Android应用程序的安全分析和逆向工程。它提供了API,使得开发者能够解析APK文件,提取Dalvik字节码,进行静态分析以及...
为了开始使用Mercury,开发者需要先确保安装了Node.js和npm(Node包管理器)。然后,他们可以在命令行中导航到下载的Mercury目录,并运行`npm install`来安装所有依赖。接着,他们可以查看`README.md`中的指示,学习...
根据提供的文件信息,文件标题“Mercury II 5800可调数字量输出编码器数据表.pdf”及描述“Mercury II 5800可调数字量输出编码器数据表pdf, Mercury II 5800可调数字量输出编码器数据表”,可以总结出以下关于...
1. 编码器简介:Mercury编码器是一种旋转式光栅尺,用于精确测量机械旋转部件的位置或角度。光栅尺通过其上的光学或电磁原理实现精确的位置检测。 2. 调整目的:调整旋转式光栅尺的主要目的是确保编码器能够准确、...
标题"MERCURY无线网卡驱动.zip"所对应的是一款专为MERCURY品牌的无线网卡设计的驱动程序集合。MERCURY,通常也被称作“水星”,是一家知名的网络通信设备制造商,提供各种无线网络解决方案,包括无线网卡、路由器等...
《Mercury Tours Web Application与LoadRunner性能测试详解》 Mercury Tours Web Application是一款早期用于LoadRunner性能测试训练的示例应用程序。它为用户提供了一个模拟在线旅游预订系统的平台,旨在帮助学习者...
Keyword View以表格形式展示录制的脚本,便于参数化,而Expert View则适合熟悉VB脚本和QTP函数的用户直接编辑脚本。Data Table是自动化测试中的一个重要组成部分,它相当于Excel,提供了测试脚本所需的数据输入和...