【代码导读】Github 开源项目——wysihtml5 富编辑器(Bootstrap 风格)【一】
如果你经常留迹于各大论坛、博客,肯定对它们的富编辑器稍有印象。纯 Javascript 富编辑器可以说是前台 JS 脚本的巅峰作品。一款完整的编辑器,其复杂的功能,会让你遇到各种头痛的浏览器兼容问题,对 JS 功底要求非常之高。
但各种经验总结,无数的解决方案,使得富编辑器能让 JS 爱好者们一次性、密集地学习到各种知认、技巧。
目前已经存在好几款成熟的富编辑器:
....
但今天所导读的这款编辑器却可能很少有人听过,这是一款由国外某顶级 JS 大神 xing 独自编写,名为 wysihtml5。
官网地址:https://github.com/xing/wysihtml5
示例:

注意! 该项目虽代码精良,但已有数年未被维护,对最新几款浏览器的兼容稍显不足,本文作者在使用该编辑器时,曾遇到不少问题,但已一一解决。如果是大量修改后的版本,且使用了 Bootstrap 样式。
http://classfoo.com/app/editor
编辑效果可以前往查看。
如下是本文作者修改后的,其基于 Bootstrap 样式,当然,您也可以轻松替换为其它样式(Semantic UI、foundation...)

查看具体:http://classfoo.com/app/editor。
wysihtml5 优势有哪些?
1. 代码量少
tinymace.min.js 4.1.6 —— 295KB
ckeditor.min.js 4.4.5 —— 472KB
wysihtml5-0.3.0.min.js —— 110KB
wysihtml 代码事实上还有很大压缩空间,也很容易删除不需要的代码,上面编辑器大小不包括素材、皮肤、插件、配置,最终大小可能不止于此,而 wysihtml5 可以很容易使用对应站点的皮肤,且对应的配置文件非常小,全部加起来做下优化能做到 < 100KB。
2. 容易修改
代码量少天生决定了该特定,熟悉代码后,你可以根据自已的需求做出相应调整。不考虑插件功能,也不做动态配置,不考虑国际化,不需要层层封装,架构简单太多。
3. 容易配置
包括皮肤、自定义样式、格式过滤等,不需要了解复杂的配置逻辑,一般直接改下 JSON 对象的值就行了,不用写一行代码。
4. 该有的都有
- 通用编辑功能
- 最低支持 IE8
- 跨平台(官方本来说支持,但好久没维护了所以。。。不过自已改下代码量也不多)
- 安全(沙盒、处理脏标签、脏样式,清除所有 Javascript 脚本)
- 换肤
- MarkDown 转换(需稍改代码即可)
废话到此,开始导读!
注意,本代码导读将分几个系列进行,欢迎关注。
简介
- 整体结构
- 全局变量
- 基类 Base
- 基础对象(数组、事件派发、对象操作、字符串)
- 视图
- 编辑面板
- 编辑器
- 工具栏
- Dom 封装
- 命令管理器
- 撤销管理器
- 范围管理器 Rangy
- 选择管理器 Selection
- 代码格式化及样式过滤
- 浏览器兼容性检测
- 工具栏语音功能
- 工具栏对话框
为保质量,逐步进行,请君关注 :)
【代码导读】Github 开源项目——wysihtml5 富编辑器(Bootstrap 风格)【一】的更多相关文章
- 如何参与一个 GitHub 开源项目?
最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无 人不知,越来越多的个人和公司纷纷加入到Github的大家族里 ...
- 如何参与一个GitHub开源项目
Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Git ...
- 开源项目福利-github开源项目免费使用Azure PipeLine
微软收购Github后,很多人猜想微软可能会砍掉VSTS,然而事实VSTS并没有砍掉,关于Azure Devops的详细信息可以查看 这篇博客,如果想查看原文也可以从链接里提供的原始地址里查看. 今天 ...
- Android Hawk数据库 github开源项目
Android Hawk数据库 github开源项目 Hawk 是一个很便捷的数据库 . 操作数据库仅仅需一行代码 , 能存不论什么数据类型 . github 地址: https://github. ...
- iOS:开发常用GitHub开源项目(持续更新)
IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...
- 如何参与一个GitHub开源项目?
如何参与一个GitHub开源项目? 摘要:本文是Github官如何参与一个GitHub开源项目方给出的参与Github上开源项目的一些指导,对希望加入开源社区的开发者是一个不错的参考. 最近一年开源项 ...
- 【Github开源项目体验】- ZFile 基于 Java 的在线网盘
[Github开源项目体验]- ZFile 基于 Java 的在线网盘 在线云盘.网盘.OneDrive.云存储.私有云.对象存储.h5ai.上传.下载 date: 2022-08-02 addres ...
- 2015-2016最火的Android开源项目--github开源项目集锦(不看你就out了)
标签: Android开发开源项目最火Android项目github 2015-2016最火的Android开源项目 本文整理与集结了近期github上使用最广泛最火热与最流行的开源项目,想要充电与提 ...
- Android笔记——导入Github开源项目CircleRefreshLayout
百度n久都找不到android studio导入第三方类库的正确方法,纠结睡不着 ,最后终于蒙到了方法,原来想太多了 ---------------------------------------- ...
随机推荐
- Git创建分支/GIT提交分支
git clone xxx.git cd fwspp-react git init touch README.md git add README.md git commit -m "add ...
- Timer 与 TimerTask 示例
, 1000);// 1秒后执行 然后每隔1秒 执行一次 ); ); timer.cancel();//停止任务(程序停止) } } /** * 启动刷新滚动数据的定时器 */public void ...
- C#.NET常见问题(FAQ)-如何声明list的多维数组
可以用下面的方法来声明多维list数组,但是不推荐使用 //对于一维数组:List<数据类型> 变量 = new List<数据类型>(); List<int> ...
- C#.NET常见问题(FAQ)-如何让Listbox支持多选
把SelectionMode改成MultiExtended 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线 ...
- ArcGIS 10.4的0x80040228许可错误
今天,再次遇到这个问题,再忙得把它记录下来! AO/AE程序的许可方式 不管是开发环境是基于ArcObject还是基于ArcEngine,不管运行环境是Desktop还是Runtime(早已改名了为A ...
- ArcGIS读取dem格式数据
DEM是GIS常用的一种数据,用来做各种分析.展示等,十分有用!它实质上就是一个栅格,只不过这个栅格值表示高程,常用的格式是tif,grid等.今天听到了另外一种说法:*.dem是最常见到的DEM的格 ...
- 从C++到java
C++和java都号称是面向对象的语言,虽然C++不完全算是.学习过C++如何快速对java有个大体的掌握,可以通过对比来进行了解. 首先还是来高大上一下,看看他们的使命: · C++ 被设计成主要用 ...
- JavaScript 之 JavaScript 对象
重新看JavaScript对象,参考资料: RUNOOB.COM:http://www.runoob.com/jsref/jsref-fromcharcode.html: CodePlayer:htt ...
- ORA-01654错误
问题现象: 测试库使用如下方式创建索引: create index IDX_ANA_OFFICE on ANA (OFFICE_CITY, OFFICE_NO) tablespace IDX ...
- linux下时间有关的函数和结构体
1.时间类型.Linux下常用的时间类型有6个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm. (1) ...