【代码导读】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导入第三方类库的正确方法,纠结睡不着 ,最后终于蒙到了方法,原来想太多了 ---------------------------------------- ...
随机推荐
- unity3d shader 学习
[浅墨Unity3D Shader编程] 着色器参考 [Unity Shaders]
- Android studio 将 Module 打包成 Jar 包
整理记录 AndroidStudio 把一个 module 项目打包成 jar 包. 一.默认自动生成的 jar 包 众所周知 android studio 会在library所依赖的 app运行 或 ...
- 动态加载jar包(一)
一.编写被调用的类 package com.qunar.helloworld; public class HelloWorld { public String sayHello(){ return ( ...
- spring boot-mybatis全注解化(3)
pom.xml <!-- 引入mybatis --> <dependency> <groupId>org.mybatis.spring.boot</group ...
- SRA秘钥生成与解密
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java ...
- javascript将算法复杂度从O(n^2)做到O(n)
compare the difference of two giving array, return results: 1. elements in both array, 2. elements o ...
- Vue router 一个路由对应多个视图
使用命名路由 https://jsfiddle.net/posva/6du90epg/ <script src="https://unpkg.com/vue/dist/vue.js&q ...
- thinkPHP 快速上手
http://www.kancloud.cn/manual/thinkphp5/118006 克隆项目 //首先克隆下载应用项目仓库 git clone https://github.com/top- ...
- MSVC下使用Boost的自动链接
简述 好久没有用过boost库了,以前用也是在linux下,需要哪个部分就添加哪个部分到Makefile中. 最近要在Windows下使用,主要是mongocxx库依赖它,不想自己去编译它了,就直接在 ...
- 基于JavaWeb实现的研究室综合系统
代码地址如下:http://www.demodashi.com/demo/14641.html 概述 基于JavaWeb实现的研究室综合系统,功能包括研究室成员注册.登陆,后台管理,相册功能,新闻模块 ...