最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 实现一个简单的富文本编辑器

    正文概述 掘金(leochen)   2020-12-13   390

    webpack 加 typescript 构建项目,基于 document.execCommand实现一个简单的富文本编辑器,只包含颜色、设置标题、粗体三个功能。document.execCommand api 详见 mdn 文档 document.execCommand。项目地址 miniEdit。

    contenteditable=true 和 document.execCommand

    通过执行 document.execCommand,可以对标签的 contenteditable 属性为 true 的可编辑区域选中的文本进行设置,从而实现富文本编辑器的功能。而document.execCommand 提供了很多操作文本的命令,如设置文本的颜色,文本的大小,缩进等等。

    安装相关依赖

    安装主要依赖。 webpack、webpack-cli、ts-loader、typescript。下面是所有需要的包。 实现一个简单的富文本编辑器

    主要文件目录

    lib 下的文件是富文本编辑器的实现的代码,包括样式和核心代码。 src 下的文件主要是为了开发时,配合 index.html 实例化一个编辑器。

    lib-- (编辑器代码)

    --index.js (生产时打包输出入口文件)

    --main.ts (编辑器核心代码)

    --index.css (编辑器样式)

    src-- (import编辑器构造函数,并实例化,用于开发)

    --index.css (html的样式)

    --index.js (开发时打包的入口文件)

    index.html (开发环境下,生成编辑器)

    webpack 配置

    这里分为两个配置文件。webpack.config.js 用来开发环境使用。入口文件在 src 目录下的 index.js 文件。

    webpack.build.config.js 用来开发环境使用。入口文件在 lib 目录下的 index.js 文件。

    功能的实现

    因为通过 document.execCommand 可以对标签 contenteditable=true 的区域的选区产生影响。所以点击对应的按钮时执行相应的命令就可以对选中文字进行编辑。 'bold' 命令会将选取加粗'forecolor' 会将选区的文字设置成指定的颜色'fontSize' 可以将选区的文字设置成指定的大小

    一个小坑

    当可编辑区域选中了一些文字之后,再点击按钮执行 document.execCommand 会发现没有效果。原因是点击按钮时,可编辑区域失去焦点,造成选区丢失,执行命令失败。我们给按钮的点击事件做下处理就行了。 给按钮添加一个 onmousedown 事件处理程序,在事件处理程序中 event.preventDefault() 取消事件的默认行为。 实现一个简单的富文本编辑器 之所以不在click事件中加是因为,onmousedown 事件会先于 click事件触发,所以onmousedown 事件触发时已经导致可编辑区域失去焦点。


    起源地下载网 » 实现一个简单的富文本编辑器

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元