富文本编辑器wangEditor的使用(即学即用)

2023-11-09

介绍

wangEditor 是一款基于JavaScript和CSS开发的Web富文本编辑器,其具有轻量级、简洁、易用的特点。当然,市面上有许多别的富文本编辑器,各有特点,本文专注于介绍wangEditor这一款富文本编辑器。
首先明确一点,什么是富文本编辑器。相比于普通的文本编辑器,我们只能够输入文本类型的数据内容------文字、字母、数字、常见符号等,而富文本编辑器,重点突出在“富”字,其拓展了文本的局限性,使得我们直接在编辑框中输入超越文本的数据内容成为可能,其包括但不限于上传图片、输入表情、字体大小字号调整、颜色设置、对齐方式等的功能操作。

引入

要使用wangEditor 富文本编辑器,我们需要将其相关的js包引进来,依赖使用。
一种方式是直接下载相关js包,另一种方式是使用CDN,直接进行在线引用。
这里采用第二种方式的引入,下面贴出具体CDN地址:

https://unpkg.com/wangeditor/dist/wangEditor.min.js

在html页面中,使用以下代码即可完成引用:

 <script type="text/javascript" src="https://unpkg.com/wangeditor/dist/wangEditor.min.js"></script>

(CDN地址亲测有效,官网使用手册给出的地址反而是引用不了的)

使用

基础编辑器
(成功引进js包之后)使用如下代码,创建编辑器

<!--首先给出一个div,并设id属性-->
<div id="div1"></div>

<script type="text/javascript">
  var E = window.wangEditor
  var editor = new E('#div1')
  // 创建编辑器
  editor.create()

</script>

运行html文件,打开浏览器,实现效果图如下:
在这里插入图片描述
实用性编辑器
上面创建的编辑器,输入内容是存放到div当中。但是一般情况下,我们希望将内容写入的是areatext标签当中,并且通常areatext在form表单中,能提交到后台并进一步存入数据库当中。
然而不巧的是,wangEditor从v3版本开始不支持 textarea。
但是并没有关系,我们依旧可以自己创建一个textarea标签,同时也创建一个div标签,依然是将内容写入div中,只需要把div的内容搬到textarea中,不就可以了吗?是这个道理,官方文档也确实是给出了这么个解决方法:通过监控div变化,将内容赋值给textarea即可。

<form action="">

<!--    创建textarea标签,将其设置隐藏即可-->
    <textarea id="text1" name="content" style="display: none;"></textarea>
    
    <!--首先给出一个div,并设id属性-->
    <div id="div1"></div>

    <script type="text/javascript">
        var E = window.wangEditor
        var editor = new E('#div1')
        //创建编辑器
        editor.create()
        
        //监听变化
        editor.config.onchange = (html) => {
            $('#text1').val(editor.txt.html())
        };
    </script>

</form>

敲黑板:这里有一个点要注意的是,我们使用的是editor.config.onchange,而目前官方文档写的是editor.customConfig.onchange,这是不会生效的。其他的配置也一样,统一需要将customConfig换成config 。)

自定义编辑器功能

编辑器默认有的各种功能,我们可以依据自己的实际需求情况进行调整,可使用editor.config.menus定义显示哪些于菜单和菜单的顺序。

  editor.config.menus=[

                'head', // 标题

                'bold', // 粗体 

                // 'fontSize', // 字号
                
                // 'fontName', // 字体

                'italic', // 斜体

                'underline', // 下划线 

                'strikeThrough', // 删除线

                'foreColor', // 文字颜色

                'backColor', // 背景颜色

                // 'link', // 插入链接 
                
                // 'list', // 列表 

                'justify', // 对齐方式

                'quote', // 引用

                'emoticon', // 表情

                'image', // 插入图片 

                'table', // 表格


                'undo', // 撤销

                'redo', // 重复
                'code', // 插入代码 

            ]

上传图片功能

这里强调一下用的比较多的上传图片的功能。
wangEditor编辑器,默认的上传图片方式是这样的:
在这里插入图片描述
需要我们输入网络图片的url,点击插入。
如果出现插入错误的情况,请检查是否是网络图片,是否是正确有效的url地址。(直接复制网上的图片的浏览器地址栏地址大概率是不行的,需是正确的、能够访问到的网络资源路径)
如若出现问题,按F12可以查看具体出现的问题,针对性解决问题。

这种方式具有很大的局限性,它也是无法直接插入本地电脑的图片的,当输入本机图片资源地址时会报错提示"Not allowed to load local resource",这是由于浏览器的安全性设计,不能直接访问本地资源。

进阶上传图片功能

一般来说,上传图片很多情况下都是上传本机的图片文件,因此最好是能够直接点击,就打开电脑文件目录浏览,让我们选择图片上传插入。
我们需要添加以下语句:

   editor.config.uploadImgServer ="/addimgServlet" ; // 上传图片到服务器,这里的路径是举个例子而已
   editor.config.uploadFileName = ""; //文件名

这个时候,就出现了如下的 效果图:
在这里插入图片描述
点击会出现本机的文件浏览目录,可以供我们选择图片。


然而到这里并不能够真正实现上传图片。要实现这种需求,需要我们自己写一个接口,实现将图片文件以流的形式或是其他形式写入到指定路径的这一过程,需要手动打代码实现。这是其一。
其二,成功上传文件之后,要将图片文件显示插入在编辑框中,很可能会出现插入失败的情况,这里给出的解决方案参考是设置虚拟路径。

该功能实现比较繁杂,这里不过多展示,有需要的小伙伴可以在评论区留言私信我。

结语

以上便是关于富文本编辑器wangEditor使用的介绍了。
富文本编辑器的使用还是比较常见的,需求也高,掌握起来对自己有利无害。
OK,本篇文章就到这里结束啦,欢迎大家交流谈论,一键三连。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

富文本编辑器wangEditor的使用(即学即用) 的相关文章

  • 防止垃圾邮件按钮呼叫功能

    如何防止调用函数时出现垃圾邮件按钮 就像用户只能在按钮上每 1 秒调用一次该函数 有办法做到吗 因为我尝试了 setTimeout 但没有成功 它仍然在发送垃圾邮件 顺便说一句 我使用 Jquery 这是我的代码
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • IE 中的 XPath 查询使用从零开始的索引,但 W3C 规范是从一开始的。我应该如何处理差异?

    问题 我正在转换目前仅适用于 Internet Explorer 的相对较大的 Javascript 代码 以便使其也适用于其他浏览器 由于代码广泛使用 XPath 我们做了一些兼容性功能以使事情变得更容易 function selectN
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u

随机推荐

  • mysql服务无法启动解决办法

    第一步先查看是不是端口号被占用 netstat aon findstr 3306 33060是mysql8 0 版本的扩展端口 果然被占用 强制终止进程 强制终止进程 11536 taskkill F pid 11536
  • Eastmount博客导读:专栏系统分类和博客归纳总结

    为了更好地帮助博友学习作者的博客 方便作者自己归纳总结专栏 本文详细介绍了作者八年来 在CSDN写的各种专栏 各种系列文章 八年来 作者经历了从本科到硕士 到贵州教书成家 再到现在的博士 八年来 作者学得很杂很宽 绝大多数专栏都是从零学起
  • Broken pipe产生原因分析

    一 Broken pipe产生原因分析 1 当访问某个服务突然服务器挂了 就会产生Broken pipe 2 客户端读取超时关闭了连接 这时服务器往客户端再写数据就发生了broken pipe异常 二 方案 1 问题一分析服务器为什么挂了
  • 可充电电池安规认证标准、GB 9706.1-2020对医用电气设备中电池的要求

    目录 可充电电池 安规认证标准 IEC 62133 标准主要包含以下项目的测试及验证 在这些测试及验证项目中 大部分均是常见的常规测试项目 但仍有部分项目值得留意及关注 UN38 3运输认证 UN38 3测试项目 GB 9706 1 202
  • mybatis 动态表名insert 传入表名、字段名、数据

    mybatis 动态insert 传入表名 字段名 数据 主要是实现不同的表名进行插入然后进行操作 可以使用MybatisPlus自带的过滤器进行配置 MybatisPlusConfig 测试方法如下 RunWith SpringRunne
  • 关于vue 引入两个版本echarts的坑。

    项目开发中 前端非要使用echarts3 0版本 我的业务又有地图需要显示 吐槽一下后端开发招进来变前端 一开始是引用了5 0版本的js文件 后来踩了很多坑就改成引用别名 控制台输入 npm i echarts5 npm echarts 5
  • .natvis的文件来问题总结 .natvis的文件来

    VS调试STL问题总结 C Program Files x86 Microsoft Visual Studio 2017 Community Common7 Packages Debugger Visualizers https www c
  • python实现Word2Vec+哈夫曼树+skip-gram

    阅读这篇之前如果对于层次softmax不清楚可以先看看http 124 222 190 191 8090 archives word2vec zhong de ha fu man shu 再来阅读代码 你将会有意外收获 1 数据集 百度云网
  • [Qt Quick] No rule to make target问题解决办法

    问题描述 修改项目中资源的qml文件名或删除无用资源文件后 重新构建项目时 会出现类似如下的问题提示 No rule to make target aaa needed by bbb Stop 使用快捷键 Alt 4 定位到编译输出窗口 可
  • 【IAP】IAP在线升级流程

    IAP 全称是 In Application Programming 中文解释为 在程序中编程 不同于ISP通过设置MCU内部的BootLoader程序引导烧写或者是ICP通过SWD JTAG在线仿真烧写 IAP是一种对通过微控制器的对外接
  • Java高并发之锁总结、常见的面试问题

    1 锁的分类 乐观锁与悲观锁 悲观锁 对共享数据进行访问时 悲观锁总是认为一定会有其他线程修改数据 如果不加锁 肯定会出问题 因此 悲观锁无论是否出现共享数据的争用 在访问数据时都会先加锁 Java中同步互斥都是采用这种悲观的并发策略 sy
  • HTTP协议接口

    主要特点 1 支持客户端 服务器模式 客户端向服务器请求服务时 只需传送请求方法和路径 常见的请求方法有GET POST 2 简单 3 灵活 HTTP允许传输任意类型的数据对象 正在传输的类型由ContentType加以标记 4 无连接 限
  • 「高并发业务必读」深入剖析 Java 并发包中的锁机制

    故事 程序员小张 刚毕业 参加工作1年左右 日常工作是CRUD 架构师老李 多个大型项目经验 精通各种屠龙宝术 小张和老李一起工作已有数月 双方在技术上也有了很多的交流 但是却总是存在一些争议 这一天 在公司年会上 他们两个意外地坐到了同桌
  • 单链表按照指定顺序插入节点(思路分析) [数据结构][Java]

    单链表按照特定顺序插入节点 思路分析 这里我们要实现在自定义的英雄链表中添加英雄时 根据排名将英雄插入到指定位置 如果有链表中已经有这个排名了 那么就添加失败 并且给出提示 思路分析 首先找到待添加结点位置的前一个位置 涉及到遍历 所以是通
  • python中导入TXT时,使用split()分割文本时,出现错误ValueError: not enough values to unpack (expected 2, got 1)

    Python中使用str split 时 一般都会有两个参数 比如 role words str split 1 注意split的 它必须和str中的冒号 str中必须有冒号 否则就会报错 都是同一种冒号 要么是英文半角 要么是中文冒号 如
  • easyx图形库-----贴图技巧之透明贴图与位运算(与运算、或运算、异或运算)

    目录 位运算 1 与运算 2 或运算 3 异或运算 2 图形库颜色位运算与透明贴图实现 相关操作码 透明贴图的实现 我们都知道电脑的系统处理方式都是以二进制去处理的 每一个数据的背后都是二进制数字0跟1表示 那么这一期我就来介绍怎么去利用二
  • MFC 菜单 menu

    在网上看了怎样制作一个菜单 往往说的内容很多 但自己还是没看懂 今天看了一个公司前人写的一个程序 原来这么简单 给大家分享一下 就用一个基于对话框的MFC程序为例吧 首先 新建一个菜单 点击resource Dialog 右击insert
  • 视觉SLAM实践入门——(20)视觉里程计之直接法

    多层直接法的过程 1 读图 随机取点并计算深度 2 创建图像金字塔 相机内参也需要缩放 并计算对应点的像素坐标 3 应用单层直接法 使用G N L M等方法 或者使用g2o ceres库 进行优化 源码中有一些地方会引起段错误 修改方法见下
  • 嵌入式单片机基础篇(三十一)之Stm32F103与WiFi模块ESP8266 Station模式控制LED灯程序

    Stm32F103与WiFi模块ESP8266 Station模式控制LED灯程序 include stm32f10x h include string h include stdio h unsigned char UARTbuff 10
  • 富文本编辑器wangEditor的使用(即学即用)

    介绍 wangEditor 是一款基于JavaScript和CSS开发的Web富文本编辑器 其具有轻量级 简洁 易用的特点 当然 市面上有许多别的富文本编辑器 各有特点 本文专注于介绍wangEditor这一款富文本编辑器 首先明确一点 什