wangEditor富文本编辑器改造记录之一——了解wangEditor结构
wangEditor富文本编辑器改造记录之一——了解wangEditor结构
最近鉴于项目要求,需要对自己使用的富文本编辑器进行改造。
我们首先简单了解下wangEditor的源码结构
第一步:polyfill
当然现在这些基本都用不上了,现代点的浏览器都支持这些方法的
基于document封装了一套dom操作类DomElement
里面有forEach
、css
、show
、on
、addClass
、children
、find
、parent
、insertAfter
等
然后将它改成类似jQuery的
function $(selector) {
return new DomElement(selector);
}
配置
根据用户配置和默认值合并成最终的配置
工具栏上的各类菜单功能组件
比如Head
、Head
、FontSize
、Italic
、Undo
、ForeColor
、Bold
等,每个组件都可以注册在菜单组件Menu
上,由菜单组件统一管理添加到工具栏上,几乎每个菜单功能组件都有一个_command
方法,其主要功能就在这个方法中。
我们看一个设置颜色的组件ForeColor
// 原型
ForeColor.prototype = {
constructor: ForeColor,
// 执行命令
_command: function _command(value, index) {
var editor = this.editor;
editor.cmd.do('foreColor', value);
},
};
其核心方法就是document的execCommand
。
如果需要及时更新菜单功能组件的最新值(比如Bold组件查询当前位置是否已经加粗)来更新对应按钮的显示状态,就需要一个额外的方法tryChangeActive
,所有功能组件的tryChangeActive
方法会在执行了对应的command和保存选区时被调用。
怎么获取当前的最新值呢?尤其是那种从未通过菜单设置的地方?
以获取当前位置是否加粗的Bold为例
Bold.prototype = {
constructor: Bold,
// 试图改变 active 状态
tryChangeActive: function tryChangeActive(e) {
var editor = this.editor;
var $elem = this.$elem;
if (editor.cmd.queryCommandState('bold')) {
this._active = true;
$elem.addClass('active');
} else {
this._active = false;
$elem.removeClass('active');
}
},
}
其核心就是document的queryCommandState
方法。
这些菜单功能组件根据交互方式可以分为点击类(比如加粗Bold)和下拉类(比如对齐方式Justify)。
wangEditor还支持简单的多语言
- 分类:
- Web前端
相关文章
2021年的一点工作总结(二)富文本编辑器
邮件项目的核心功能就是编辑邮件了,所以文本的编辑特别容易被用户吐槽了。用户报障的时候一个万能的吐槽点“没有xxx功能,不支持xxx,没有Outlook好用”。 其实作为一个web产品,如果需要更加公 阅读更多…
在iframe中使用富文本编辑器wangEditor
自己做的邮件项目里面需要使用到富文本编辑器,邮件内容说白了就是HTML代码。前任使用的是wangEditor,部分定制化需求就是直接改的源码。 最近发现有的用户的邮件内容加进去的很多css信息, 阅读更多…
富文本编辑器wangEditor迁移CKEditor前后效果对比
一、背景 富文本编辑器wangEditor的工具栏如图所示 富文本编辑器CKEditor4工具栏如图所示 二、wangEditor编辑器存在问题 1. 字号和字体设置 阅读更多…
冷门知识<!DOCTYPE html>在富文本编辑器中的应用
<!DOCTYPE html> 能有什么作用,之前只是听说声明为HTML5文档,必须写在在html文档的第一行,它会让浏览器强制使用w3c标准来解析和渲染页面。 理论知识 其实 阅读更多…
wangEditor输入中文后直接粘贴bug来了解compositionstart
昨天有人反馈邮件编辑过程中的一个报障,具体内容就是在编辑器中输入中文然后直接粘贴先前复制好的信息,然后出现了bug,比如之前复制了订单号“1234”,再输入“您的订单号”后直接粘贴,编辑器内显示的结 阅读更多…
富文本编辑器wangEditor迁移CKEditor前后效果对比
一、背景 富文本编辑器wangEditor的工具栏如图所示 富文本编辑器CKEditor4工具栏如图所示 二、wangEditor编辑器存在问题 1. 字号和字体设置 阅读更多…