`
achun
  • 浏览: 315096 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

所见即所得编辑器 inEdit 开发笔记(发现 mercury,考虑直接使用)

阅读更多

经过2年时间的沉寂,inEdit 又开始进行开发了,上一次停止开发,主要原因是


 

  1. 工作了,没时间开发,现在失业中,终于又有时间了
  2. 问题太多,没有找到好的解决方案


最近通过学习 CKEditorUEditor 获得了一些思路,整理如下

主要兼容性问题

 

  1. range
    也就是选择区域范围问题,必须处理成一致的接口和对边界进行处理,对于IE可以考虑使用 ierange
    但是 ierange 有个BUG需要注意,在某些场景下获取 range text会出错
    BUG更多无法用,采取UEditor的吧

  2. 回车
    各个浏览器中差异很大,为了得到一致性有必要截获回车事件并通过代码来处理回车
    问题衍生,如果选择了某个区域,那其实要先做删除处理,这个问题 UEditor 采用自己的代码完成
    inEdit目前暂时使用 document.execCommand('delete',false,null); 解决,是否会造成一致性问题,目前未知

  3. 粘贴html
    浏览器间的行为差异很大,因此需要对此进行一致性处理,主要问题表现在标签结构和style属性上,如何处理inEdit还没有确定,CKEditor 和 UEditor对标签结构处理的很好,但是在 chrome下style没有进行很好的处理

  4. 原生execCommand
    这其实包括了所有的操作,加粗,颜色,列表,缩进,所有这些其实浏览器间都不兼容,如果要兼容需要重写代码实现这些功能,这衍生出了下面的问题

  5. 节点分割
    因原生execCommand的问题,需要对节点进行分割

  6. fake对象
    fake对象就是伪对象,在编辑期插入一个视频,为了操作的方便通常都通过一个fakeImg来实现,UEditor,CKEditor对fake对象都采用了,用在属性上嵌入html代码的方法,UEditor对一些baidu的产品,比如百度地图的伪对象进行了特殊处理,inEdit 预期对fake进行非嵌入html代码的处理

  7. 表格,图片
    浏览器中兼容性差异巨大,需要特殊处理,表格的高级特性更是需要大量的代码处理

  8. 禁止从外部拖拽

  9. 右键菜单必须被处理
好的解决方案
  1. 对话框
    UEditor把对话框作为独立的html用iframe的方式是很佳的方案

  2. 截获粘贴
    UEditor plugins/paste/paste.js 的解决方案非常优秀

  3. html解析
    UEditor和CKEditor都有自己的html解析,inEditor计划采用 simplehtmlparser
    有BUG无法用,采取UEditor的吧

  4. 事件模型
    这个就是api里面的addEvent,fire这些操作
inEdit计划采用的一些方案
  1. 继续采用 contenteditable="true"
    这也是为什么写 inEdit 的原因,不然inEdit就没有存在的意义了

  2. 样式模块
    inEdit 把样式的操作独立出来,作为基础模块供需求使用

  3. 单个引用文件,动态加载需求文件
    这个不但在开发期还是部署,都会提供一些方便,而且和完全打包是兼容的

  4. 所有功能都采用 plugin 模式,取消原生execCommand,完全用节点操作完成(delete问题待定)
    原因如上述

  5. 暂时借助jQuery
    为了提高开发速度,对于DOM的操作借助jQuery,当稳定以后可以考虑设计独立的模块替代相关功能

目前的开发进度,事件模型、基础框架、fake对象已经成型,进入替代原始execCommand阶段,inEditor要被重构了


=============================================
2011.8.31
对w3c的html定义要完全过一遍了,零零碎碎太多,又是上下文,有所内容模型的,一个个来吧,先做内容模型定义,这就是个dtd了,开发成本太高了。没办法,发现其他版本的dtd定义都不够仔细,而且为了适应编辑器的需求,有必要对w3c的定义做些细微调整,以便简化操作

2011.11.01
发现mercury已经实现了,考虑直接采用mercury
2011.8.30
遇到太多失败,都不确定是否能完成了


0
0
分享到:
评论
2 楼 achun 2011-08-23  
luolonghao 写道
引用
1. 对话框
UEditor把对话框作为独立的html用iframe的方式是很佳的方案


这样跨域部署时不方便,因为html的URL必须用和页面一样的域名,否则没有权限访问。你是不是有更好的解决方案呢?

引用
所有功能都采用 plugin 模式,取消原生execCommand,完全用节点操作完成(delete问题待定)
原因如上述


全部用节点操作代替execCommand,需要写庞大的js代码,ckeditor和ueditor大部分代码都在处理这个事情。不过直接用execCommand就不能统一不同浏览器生成的代码,而且浏览器原生execCommand有不少BUG,真是矛盾啊。


跨域是个问题,
代码量的问题,如果要得到一致性,简直是没有其他办法了
实际做的时候会考虑分步做,某些可以先原生,逐步代码化
1 楼 luolonghao 2011-08-23  
引用
1. 对话框
UEditor把对话框作为独立的html用iframe的方式是很佳的方案


这样跨域部署时不方便,因为html的URL必须用和页面一样的域名,否则没有权限访问。你是不是有更好的解决方案呢?

引用
所有功能都采用 plugin 模式,取消原生execCommand,完全用节点操作完成(delete问题待定)
原因如上述


全部用节点操作代替execCommand,需要写庞大的js代码,ckeditor和ueditor大部分代码都在处理这个事情。不过直接用execCommand就不能统一不同浏览器生成的代码,而且浏览器原生execCommand有不少BUG,真是矛盾啊。

相关推荐

    mercury, 水银编辑器.zip

    mercury, 水银编辑器 汞编辑器 Mercury编辑器是一个非常有特色的编辑器,非常像TinyMCE或者 CKEditor,但是使用了不同的用法模式。 它期望整个页面是可以编辑的,并且允许指定不同类型的可以编辑区域。 在页面的每一...

    Mercury SiteScope 中文使用手册

    Mercury SiteScope是一种为...SiteScope也充当其他Mercury产品(如Mercury BAC, MMS, LoadRunner)基础的监视器。SiteScope可以为您提供您需要的基础部件的实时信息,提供问题的通知,以便能在问题变棘手之前及时解决。

    mercury loadrunner使用手册

    《深入解析Mercury LoadRunner使用手册》 一、引言:LoadRunner——性能测试的卓越工具 Mercury LoadRunner是一款由Micro Focus(前身为Mercury Interactive Corporation)开发的负载测试工具,广泛应用于软件性能...

    html可视化编辑器

    这种编辑器通常被称为WYSIWYG(What You See Is What You Get)编辑器,因为它提供了所见即所得的编辑体验。用户可以通过拖放、点击和输入文本等方式在界面上操作,编辑器会自动生成相应的HTML标记。 在HTML可视化...

    Mercury SiteScope 使用手册

    **Mercury SiteScope 使用手册** Mercury SiteScope 是一款强大的监控工具,主要用于企业级的IT基础设施和服务性能管理。它能够实时监测服务器、网络设备、应用性能,并提供详细的报告,帮助IT管理员快速识别并解决...

    Mercury UsersGuide Mercury UsersGuide Mercury UsersGuide

    从给定的文件信息来看,这是一份与Mercury Computer Systems相关的用户指南文档,主要包含了公司的联系信息、版权声明、免责声明以及对OpenGL®和OpenInventor™的使用授权信息。下面将根据这些内容深入解析其中涉及...

    邮件服务器Mercury的设置方法

    邮件服务器Mercury的设置方法涵盖了从基础配置到高级设置的整个过程,以下详细知识点按照步骤逐一展开。 1. 启动Apache和MySQL服务是安装和配置邮件服务器的前提条件。Apache服务器用于托管Web应用,而MySQL是一个...

    Mercury 浏览器 2.1.0

    您还可以编辑自己的快速链接以便直接访问常用地址。 强大功能---插件、用户代理、手势控制、 自动填充表单等等功能使您的网页浏览变得更加简便。 安全保护--- Mercury浏览器的诸多安全功能能保护您的个人隐私不被...

    Mercury II编码器产品手册.pdf

    Mercury II编码器产品手册pdf,Mercury II编码器产品手册

    mercury qc用户手册

    - **产品背景**:Mercury Quality Center(简称QC)是由Mercury Interactive Corporation开发的一款功能强大的测试管理平台。Mercury公司后来被惠普(HP)收购,使得QC成为了HP软件产品线中的重要组成部分。 - **...

    mercury android平台安全评估框架软件

    1. **安装与配置**:下载并解压"mercury-master"压缩包,按照官方文档设置开发环境,包括Java、Android SDK等相关工具。 2. **APK文件导入**:将待检测的Android应用APK文件导入到Mercury中。 3. **执行扫描**:...

    mercury-v1.1.zip

    《Androguard扩展库Mercury-v1.1详解》 Androguard,作为一个强大的开源工具集,被广泛用于Android应用程序的安全分析和逆向工程。它提供了API,使得开发者能够解析APK文件,提取Dalvik字节码,进行静态分析以及...

    前端项目-mercury.zip

    为了开始使用Mercury,开发者需要先确保安装了Node.js和npm(Node包管理器)。然后,他们可以在命令行中导航到下载的Mercury目录,并运行`npm install`来安装所有依赖。接着,他们可以查看`README.md`中的指示,学习...

    Mercury II 5800可调数字量输出编码器数据表.pdf

    根据提供的文件信息,文件标题“Mercury II 5800可调数字量输出编码器数据表.pdf”及描述“Mercury II 5800可调数字量输出编码器数据表pdf, Mercury II 5800可调数字量输出编码器数据表”,可以总结出以下关于...

    Mercury编码器:旋转式光栅尺的调整.pdf

    1. 编码器简介:Mercury编码器是一种旋转式光栅尺,用于精确测量机械旋转部件的位置或角度。光栅尺通过其上的光学或电磁原理实现精确的位置检测。 2. 调整目的:调整旋转式光栅尺的主要目的是确保编码器能够准确、...

    MERCURY无线网卡驱动.zip

    标题"MERCURY无线网卡驱动.zip"所对应的是一款专为MERCURY品牌的无线网卡设计的驱动程序集合。MERCURY,通常也被称作“水星”,是一家知名的网络通信设备制造商,提供各种无线网络解决方案,包括无线网卡、路由器等...

    Mercury Tours Web Application for LoadRunner

    《Mercury Tours Web Application与LoadRunner性能测试详解》 Mercury Tours Web Application是一款早期用于LoadRunner性能测试训练的示例应用程序。它为用户提供了一个模拟在线旅游预订系统的平台,旨在帮助学习者...

    Mercury QuickTest Professional 8.2教程

    Keyword View以表格形式展示录制的脚本,便于参数化,而Expert View则适合熟悉VB脚本和QTP函数的用户直接编辑脚本。Data Table是自动化测试中的一个重要组成部分,它相当于Excel,提供了测试脚本所需的数据输入和...

Global site tag (gtag.js) - Google Analytics