富文本编辑器(RTE)一直是浏览器兼容性的重灾区,不看YUI Editor源码之前还只停留在概念上,看完之后确实挺震撼,editor代码和yui关系已经不大了,很大一部分代码都在if-else判断浏览器,当然editor也有一个很好的架构来对付浏览器差异问题,这次说得是写一个 RTE 所需要的核心函数。
例子:
编辑区内容html代码:
<h1>测试</h1>
<div style="text-align:center">1,2,3,4,<span style="color:red;">5,6</span>,7,8</div>
<img src="http://www.google.com.hk/intl/zh-CN/images/logo_cn.gif" alt="i love google"/>
渲染界面:
介绍
1.Range
详细介绍就要看 PPk 的 Introduction To range
,简单来说就是提供了用户编辑选择某段内容的信息,比如对用户选择的文本进行高亮,加粗,加链接就很可能要用到这个功能,各个浏览器表现差异非常大,但是 yui editor 提供了最核心的
_getRange()方法很大程度上屏蔽了这个差异。
如下图:
选择了 3,4,5,6,7 ,则 range 可以告诉我们这个信息:
2.选择元素
实现为:_getSelectedElement()方法,内部调用了_getRange,这个是yui editor提出来的概念,为了判断选择或光标所在处文本是否高亮过,是否加粗过,是否曾经加过链接,则要知道当前所在的dom元素(element),然后再对dom element进行判断即可,用来更新编辑状态栏工具栏。
当前在红色字体(5,6)区域范围内,而这段红色字体的实现是用span来包裹,则可检查selectedElement的css属性即可知道当前区域状态。
演示:
基础库使用YUI3,别的库只需替换事件注册与浏览器判断语句亦可。
rte@yui3演示
rte核心代码
演示了 _getRange ,_getSelectedElement 的作用,可在html编辑框内输入代码同步到编辑区域,可在编辑区域内光标定位,选择内容,点击按钮可以查看 range,selectedElement的简单信息,详细信息可用firefox,chrome控制台查看。
参考资料:
References:(From kissy
)
-
Command Identifiers
(MSDN)
-
selection Object
(MSDN)
-
TextRange Object
(MSDN)
-
controlRange Collection
(MSDN)
-
Rich-Text Editing in Mozilla
(MDC)
-
Selection
(MDC)
-
range
(MDC)
-
execCommand Compatibility
(让人佩服的 PPK)
-
Introduction to Range
(通俗易懂的 PPK)
-
Range Compatibility Table
(Range is EVIL)
-
contentEditable Demo
(PPK 的尝试)
-
Firefox 3 – ContentEditable
-
Midas Specification
(MDC)
-
Midas Demo
-
Cross-Browser Rich Text Editor (RTE) Demo
-
CKEditor
(FCKEditor 的新一代产品,RTE 中的王者)
-
TinyMCE
(后起之秀,我接触的第一个 RTE)
-
Google Docs
(简单与复杂的权衡)
-
YUI RTE
(爱恨交加)
-
NicEditor
(采用 ContentEditable,跨域)
-
白社会编辑器
(简单够用,挺好)
补充参考
- Rich HTML editing in the browser ( Opera ) [
part1
,
part2
]
- 大小: 29.8 KB
- 大小: 52.2 KB
- 大小: 48 KB
分享到:
相关推荐
**yuicompressor-maven-plugin详解** `yuicompressor-maven-plugin`是一款强大的Maven插件,主要用于优化前端资源,特别是JavaScript和CSS文件。这个插件是基于YUI Compressor,一个由Yahoo开发的开源工具,它能...
<linebreakpos>-1 <nomunge>true ``` - **运行插件**:在Eclipse中,执行`mvn clean package`命令,插件将在打包阶段自动对指定的.js和.css文件进行压缩,并将结果存放到指定的输出目录。 ### 5. 插件优点...
yuicompressor-maven-plugin, 用于压缩 (Minify/Ofuscate/Aggregate) Javascript文件和使用 YUI 压缩器的CSS文件的Maven 插件 [[Flattr this git repo] ( http://api.flattr.com/button/flattr-badge-large.png)]...
【标题】"yui-yuidoc-yuidoc-50-529-gc631758" 指向的是一个关于 Yahoo User Interface Library (YUI) 和 YUIDoc 的特定版本或修订版。YUI 是一个开源的 JavaScript 库,提供了一系列模块化的工具,用于构建富有交互...
TOAST UI 工具:代码片段一组实用方法,可轻松开发 javascript 应用程序。 :triangular_flag: 目录 :hammer: 用法捆 :globe_showing_Asia-Australia: 浏览器支持 :wrench: 拉取请求步骤设置发展运行... Zakas,YUI 库)
选择-yui 使用,请确保获取原生 js 文件... all ( '.yui-chosen' ) . each ( function ( ele ) { ele . plug ( Y . Chosen , { no_results_text : "Nothing found dummy." , disable_search_threshold : 4 , max_s
- Struts2:一个基于MVC设计模式的Web应用框架。 - Spring:同样基于MVC的框架,提供了一个全面的编程和配置模型。 - iBatis:一个基于Java的持久层框架,简化数据库编程。 - SQL:结构化查询语言,是操作数据库...
1.安装与要求 安装 使用将库包含到您的项目中: $ composer.phar require tubalmartin/cssmin 需要Composer的自动加载器文件: <?php require './vendor/autoload.php' ; use tubalmartin\ CssMin \ Minifier ...
使用yui-compressor和htmlcompressor将HTML,XML,CSS,JSON和JavaScript内联化并分离为单独的文件。 这是由于先前的压缩器(jekyll-press)不兼容CSS3而创建的,这让我皱了皱眉。 注意:这是我正在学习的第一个...
2. Event:事件处理是Web开发中的关键部分,YUI的Event模块提供了一套跨浏览器的事件处理机制,可以方便地监听和处理各种用户交互事件。 3. Connection Manager:此组件用于处理Ajax请求,提供了异步与服务器通信的...
YUI 库,全称Yahoo! UI Library。是一组工具和控件,用JavaScript写成, 为的是用DOM 脚本,DHTML和AJAX等技术创建丰富的网页交互式应用程序。 YUI 基于BSD协议,对所有的使用方式都是免费的。YUI 项目包括YUI 库和两...
1. 安装yuicompressor插件:在Idea的插件市场搜索并安装yuicompressor相关的插件。 2. 配置项目构建:在项目的构建配置中添加yuicompressor的任务,指定输入文件路径、输出文件路径以及压缩级别等参数。 3. 运行构建...
C:\java -jar yuicompressor-2.4.2.jar editor.js -o editor2.js 参数说明: yuicompressor-2.4.2.jar 为工具包jar editor.js为要压缩的js -o editor2.js为压缩完成后的文件名 压缩率: 对resources下js...
yui compressor 2.4.6 发布日期:2011-04-15 用例: java -jar yuicompressor-2.4.6.jar myfile.js -o myfile-min.js
本文将深入探讨grunt-yui-compressor的源码,解析其工作原理和核心功能。 1. **Grunt与Grunt插件** Grunt是Node.js平台下的一个自动化任务运行器,开发者可以定义一系列的任务,如编译、测试、清理等,通过简单的...
- 函数式编程:匿名函数是JavaScript函数式编程的核心,例如高阶函数、闭包、柯里化等概念都离不开匿名函数。 5. 匿名函数的优缺点: - 优点:提高代码的封装性,减少全局变量,提高代码的安全性和可维护性,适用...
1. 压缩工具的作用: - 减小文件大小:通过删除空格、换行和不必要的字符,JS压缩工具能显著减小文件体积,加快网页加载速度。 - 代码混淆:压缩工具还可以将变量名和函数名转换为更短的形式,以进一步压缩文件,...
:waving_hand: 嗨,我是@ yui-dl :eyes: 我对人工智能感兴趣 :seedling: 我目前正在学习计算机科学 :revolving_hearts: 我希望在有关TTS,问答和其他有趣主题的深度学习项目中进行合作! :closed_mailbox_with_...
**JavaScript** 是Dag-YUI-Compressor的核心语言,它是一种广泛用于浏览器端和服务器端的编程语言,具有动态类型、原型继承和高度可移植性等特性。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它利用事件...
它汇集了几乎所有现代Web工具:JsHint,CssLint,JsMin,Google Closure压缩器,YUI Compressor,UglifyJs,Dojo Shrinksafe,Css变量支持,JSON压缩,Less,Sass,CoffeeScript等。 介绍 该启动器为您执行以下自动...