富文本编辑器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的使用(即学即用) 的相关文章

  • Chrome 扩展程序中的后台脚本到底何时运行?

    在我的 chrome 扩展中 我有一个后台脚本 它将使用XMLHttpRequest note that this code is in the global scope i e outside of any function also n
  • 代码点火器 JSON

    你好 我使用 codeigniter 然后我从控制器中的数据库中回显输出 然后在我的视图文件中执行以下操作 但它没有显示任何内容 S 我的模型文件 function forumList this gt db gt select oversk
  • JSDoc:如何在生成的文档中包含自定义 css 文件模板?

    JS文档docs https jsdoc app about configuring default template html say 将图像目录复制到输出目录 复制全部 将 myproject static 中的静态文件复制到输出目录
  • React:React 如何确保在浏览器有机会绘制之后调用 useEffect?

    useLayoutEffect 的文档说 useLayoutEffect 内计划的更新将被刷新 在浏览器有机会绘制之前同步进行 useEffect 的文档说 与 componentDidMount 和 componentDidUpdate
  • 如何在 JavaScript 中构建一个计算数组中出现次数的对象?

    我想计算数组中某个数字出现的频率 例如 在Python中我可以使用Collections Counter创建一个字典 记录某个项目在列表中出现的频率 据我所知 JavaScript 是这样的 var array 1 4 4 5 5 7 va
  • History.replaceState 仍然向“浏览历史记录”添加条目

    具体来说 调用以下代码片段 history replaceState undefined undefined value 正确地不会影响当前页面的后退按钮行为 但是will在 浏览历史记录 页面添加一个条目 这是我不想要的 下图是 Chro
  • JointJS - 处理链接删除点击

    创建链接后 将鼠标悬停在其上会显示红色 X 以将其删除 单击此按钮将触发一系列事件 通过订阅 全部 活动收集 单元格 向下指针 链接 向下指针 cell pointermove x5 似乎可疑 单元格 指针向上 在浏览了文档并花费了太长时间
  • 具有固定高度、自动宽度并保持比例的图像

    我有一个反应灵敏的ul列表 其中每个li是 50 ul宽度 每一个li 我有一个图像 我想要固定的高度和 100 的宽度 保持图像的比例 例如通过缩放 请问我该怎么做 ul width 100 li width 50 float left
  • 如何使用 CSS 将 div 置于表格中心?

    我正在尝试向我的网站之一添加幻灯片 整个页面布局在一个 HTML 表格中 我非常讨厌它并且没有选择 我想将我的幻灯片放在该特定列的中心 我的 CSS 如下所示 slideshow position relative slideshow IM
  • django ajax post 403被禁止

    使用 django 1 4 当我尝试从我的 javascript 做我的 django 服务器上的帖子时 我收到 403 错误 我的 get 工作正常 尽管问题仅出在帖子上 也尝试过 csrf exempt但没有运气 更新 我现在可以发布我
  • 对数字和字母元素的数组进行排序(自然排序)

    假设我有一个数组 var arr 1 5 ahsldk 10 55 3 2 7 8 1 2 75 abc huds 我尝试对其进行排序 我得到了类似的东西 1 1 10 2 2 3 5 55 7 75 8 abc ahsldk huds 注
  • 如何检查jquery数据表中的每个复选框?

    我有一个第一列带有复选框的表格 我使用 jQuery DataTable 插件显示我的表格 我制作了 2 个链接来选择 取消选择每个复选框 这是选择全部的一个 a href Select all a 和 JavaScript functio
  • 比较 javascript 元素和 scala 变量的 Play 框架 Twirl 模板

    如下面的代码示例所示 我想比较 scala 辅助元素内的 javascript 元素 然而 即使存在元素 abcde 它也始终返回 false 除了使用标签之外 如何获取 scala 辅助元素内的 javascript 值 appSeq S
  • 在外部单击时关闭弹出 div

    我有一个弹出 div 仅在单击特定按钮时显示 单击同一按钮时它甚至会隐藏 我的问题是 我还想在单击外部任何地方时隐藏 div 我无法这样做 因为弹出 div 位于主包装类内部 并且无法通过在包装类上使用 click 事件并使其隐藏来做到这一
  • IE6 丢失查询字符串

    我有一个使用 javascript 从查询字符串中获取值的页面window location 从网络服务器运行时效果很好 但如果我通过将其放在地址栏中使用 IE6 在本地运行它 c mysite index htm 网站创建的任何查询字符串
  • Tween JS 基础知识之三个 JS 立方体

    我是 Tween JS 的新手 尝试使用 Tween 制作一个向右移动的简单动画 下面是我在 init 函数中的代码 我使用的是三个 JS var geometry new THREE CylinderGeometry 200 200 20
  • 获取 2 个日期之间的月份名称

    我有两个约会from and to 我想获取这两个日期之间的所有月份名称 以下是我的代码 var monthNames January February March April May June July August September
  • 如何在 JavaScript 中设置/更新 String 对象的值

    我有一个具有一些属性的对象字符串对象 var obj foo new String bar 我在用字符串对象因为我需要在对象上存储额外的子属性 同时仍然能够获取字符串值 obj foo baz baz obj foo gt bar 我觉得问
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就

随机推荐

  • 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这一款富文本编辑器 首先明确一点 什