wangEditor富文本编辑器的调用开发实录(v5版本、获取HTML内容、上传图片、隐藏上传视频)

news2025/2/13 10:42:24

wangEditor 是一款基于原生 JavaScript 封装,开源免费的富文本编辑器,支持常规的文字排版操作、插入图片、插入视频、插入代码等功能,同时提供多样化的扩展功能(如字体、颜色、表情、代码、地图等插件),支持插件化开发和自定义配置。该编辑器简洁易用,功能齐全,可广泛应用于各种 Web 项目中。

以下实战记录,基于wangEditor V5版,说明文档:传送门

一、编辑器基本配置

在这里插入图片描述
wangEditor 从 V5 版本开始,工具栏配置和菜单配置(如配置颜色、字体、链接校验、上传图片等)分离了。

1.编辑器自适应CSS

        #editor—wrapper {
            border: 1px solid #ccc;
            z-index: 100; /* 按需定义 */
        }

        #toolbar-container {
            border-bottom: 1px solid #ccc;
        }

        #editor-container {
            height: 500px;
        }

2.构建编辑器容器

<div id="editor—wrapper">
    <div id="toolbar-container"><!-- 工具栏 --></div>
    <div id="editor-container"><!-- 编辑器 --></div>
</div>

3.配置项设置

    //配置项
    const {createEditor, createToolbar} = window.wangEditor
    const editorConfig = {
        MENU_CONF: {},
        placeholder: 'Type here...',
        onChange(editor) {
            const html = editor.getHtml()
            //console.log(html)
        }
    }
    
 const editor = createEditor({
        selector: '#editor-container',
        html: '',//预置内容
        config: editorConfig,
        mode: 'default', // or 'simple'
    })

    const toolbarConfig = {}
    const toolbar = createToolbar({
        editor,
        selector: '#toolbar-container',
        config: toolbarConfig,
        uploadVideoShow: false,
        mode: 'default', // or 'simple'
    })

4.获取内容

   $("#btn").click(function () {
        const html1 = editor.getHtml()
        console.log(html1);
    });

【注意】 HTML 内容必须是 wangEditor 生成的(即 editor.getHtml() 返回的) HTML 格式,不可以自己随意写。HTML 格式非常灵活,wangEditor 无法兼容所有的 HTML 格式。例如,wangEditor 可以识别 hello 为加粗,但无法识别 hello 等其他加粗方式。

二、上传图片配置

1.前端配置

    //上传图片
    editorConfig.MENU_CONF['uploadImage'] = {
        server: 'up.php',
        maxFileSize: 1 * 1024 * 1024, // 1M
        allowedFileTypes: ['image/*'],
        // 单个文件上传失败
        onFailed(file, res) {
            console.log('上传失败', res)
        },
    }

2.后台API接口配置

up.php文件(未做上传逻辑展示)

  • 正常返回
$res = ["errno" => 0,
    "data" => [
        "url" => "20230613110558393.jpg"
    ]
];
die(json_encode($res));
  • 异常返回
$res = [
    "errno" => 1,
    "message" => "失败信息"
];

die(json_encode($res));

三、隐藏上传视频

在这里插入图片描述

1.获取工具栏按钮

    console.log(toolbar.getConfig().toolbarKeys);

2.排除菜单

  • 如果仅仅想排除掉某些菜单,其他都保留,可以使用 excludeKeys 来配置。 可通过 toolbar.getConfig().toolbarKeys 查看工具栏的默认配置;
  • 如果你想排除某个菜单组,可通过toolbar.getConfig().toolbarKeys 找到这个菜单组的 key;

在这里插入图片描述

    //工具栏配置项
    const toolbarConfig = {}

    //排除菜单
    toolbarConfig.excludeKeys = [
        'uploadVideo' // 排除菜单组,写菜单组 key 的值即可
    ]

    const toolbar = createToolbar({
        editor,
        selector: '#toolbar-container',
        config: toolbarConfig,
        uploadVideoShow: false,
        mode: 'default', // or 'simple'
    })

总结

一直使用layui作为前端的配合组件,但是随着功能需求的不断增加。layedit富文本编辑器在2.8版本中彻底放弃了,只好寻找其他的富文本编辑器。

  1. wangEditor 从 V5 版本开始,有较大的技术更新;
  2. wangEditor 有详细的中文文档,以及中文交流环境;
  3. wangEditor 内置了所有常见的富文本操作功能,能满足绝大部分使用需求。直接配置使用即可,无需再二次开发;
  4. wangEditor 有丰富的 API 和足够的扩展性,允许你自定义开发菜单、模块、插件等;
  5. wangEditor 开源多年,大量用户使用和反馈,已经解决了很多问题;

@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot(运维篇)

SpringBoot运维篇 SpringBoot程序的打包和运行 程序打包 SpringBoot程序是基于Maven创建的&#xff0c;在Maven中提供有打包的指令&#xff0c;叫做package。本操作可以在Idea环境下执行 mvn package打包后会产生一个与工程名类似的jar文件&#xff0c;其名称由模块名版本号…

小程序开发:如何从零开始建立你的第一个小程序

你可能有一个小程序的想法&#xff0c;但它仍然是一个想法。对于开发人员来说&#xff0c;这是一项艰巨的任务&#xff0c;因为你必须确保你有足够的时间来开发你的第一个小程序。如果你决定使用小程序&#xff0c;那就有很多事情要做。创建一个小程序可能是一件非常耗时的事情…

无线蓝牙耳机推荐有哪些?八大无线蓝牙耳机排行

在近几年蓝牙耳机的飞速发展&#xff0c;我们对于音乐和通讯的需求也越来越高。传统的耳机和听筒虽然能够满足我们基本的听觉需求&#xff0c;但是它们也带来了一些问题&#xff0c;比如&#xff1a;长时间佩戴会导致耳朵疲劳、引起耳道炎等。针对这些问题&#xff0c;蓝牙耳机…

解决Dbeaver连接一段时间不操作后断开的问题

1、首先右键数据库连接点击【编辑连接】 2、点击【初始化】将【连接保持】改成60s&#xff0c;这样数据库就不会自己断开了

动态组件和异步组件

动态组件 相关api <!-- 失活的组件将会被缓存&#xff01;--> <keep-alive include"Tab1,Tab2"><component :is"currentTabComponent"></component> </keep-alive>component属性 is“全局注册或局部注册的组件名” keep…

Windows安装Pytorch3d

Windows安装Pytorch3d 1.前提&#xff1a; 安装Visual Studio 2019 【我记得必须是2017-2019之间的版本&#xff0c;我一开始用的是2022的版本就安装不了】网址pytorch和pytorch3d、cuda和NVIDIA CUB版本需要相互对应 pytorch和pytorch3d版本对应关系如下&#xff1a;https:…

springcloud-Nacos处理高并发的注册

添加服务 第一 次判断 提供性能&#xff1a;避免多个线程同时在等 synchronzied 释放 第二次 判断 &#xff1a; 别的线程可能已经将实例加入了 serviceMap() 注意这里还有个ConcurrentSkipListMap 有利于提高读写性能。 所以内层的Map 是个ConcurrentSkipLlistMap&#xff…

Binder对象的流转(系统服务的调用过程、AIDL的使用过程)

零、Binder的传递 Android系统中&#xff0c;存在大量的 IPC 交互&#xff0c;同时也使用了大量的 Binder&#xff0c;那么Binder是怎么在各进程中进行对象的传递&#xff1f; 一、调用系统服务时&#xff0c;Binder的传递 回忆一下&#xff0c;Android系统的启动流程&#x…

看一图而思全云

>> 前言 << 我在看财经十一人吴俊宇老师撰写的《阿里云计划在12月内独立上市》时&#xff0c;看到了一张全球及中国IT支出结构图。就是下图这张图&#xff0c;盯着这张图&#xff0c;我看到了星辰大海&#xff0c;也想到了广阔天地大有可为。 但只看这个图不够过瘾…

1.7C++流插入运算符重载

C流插入运算符重载 在 C 中&#xff0c;流插入运算符&#xff08;<<&#xff09;用于输出数据到流中的运算符&#xff0c;流插入运算符可以被重载&#xff0c;使得程序员可以自定义输出对象的方式。 重载流插入运算符的一般形式如下&#xff1a; 其中&#xff0c;T 是…

Vue中如何进行瀑布流布局与图片加载优化

Vue中如何进行瀑布流布局与图片加载优化 瀑布流布局是一种常用的网页布局方式&#xff0c;它可以让页面看起来更加有趣和美观。在Vue.js中&#xff0c;我们可以使用第三方插件或者自己编写组件来实现瀑布流布局。同时&#xff0c;为了优化图片加载的性能&#xff0c;我们还可以…

部署minio分布式测试环境

准备了4台虚拟机作为minio分布式节点服务器。 操作系统为TencentOS3.1(相当于CentOS8) 选择从官网下载minio安装包,minio-20230602231726.0.0.x86_64.rpm 安装命令如下: rpm -ivh minio-20230602231726.0.0.x86_64.rpm 安装完毕,minio命令将会放在/usr/local/bin下。…

推动开源行业高质量发展|2023开放原子全球开源峰会圆满落幕

6 月 13 日&#xff0c;由 2023 全球数字经济大会组委会主办&#xff0c;开放原子开源基金会、北京市经济和信息化局、北京经济技术开发区管理委员会承办的 2023 开放原子全球开源峰会在北京顺利落下帷幕。本次峰会以“开源赋能&#xff0c;普惠未来”为主题&#xff0c;设置了…

多任务学习用于多模态生物数据分析

目前的生物技术可以同时测量来自同一细胞的多种模态数据&#xff08;例如RNA、DNA可及性和蛋白质&#xff09;。这需要结合不同的分析任务&#xff08;如多模态整合和跨模态分析&#xff09;来全面理解这些数据&#xff0c;推断基因调控如何驱动生物多样性。然而&#xff0c;目…

佩戴舒适的蓝牙耳机评测,值得入手的蓝牙耳机推荐

蓝牙耳机越来越少受年轻人的欢迎&#xff0c;蓝牙耳机品牌也非常多&#xff0c;很多朋友在选择时&#xff0c;不知道选哪款好&#xff0c;下面是小编整理的蓝牙耳机品牌排行榜前十名&#xff0c;大家可以参考参考。 一、南卡OE蓝牙耳机 参考价格&#xff1a;469 舒适性最高的…

4个维度搞懂Nacos注册中心

现如今市面上注册中心的轮子很多&#xff0c;我实际使用过的就有三款&#xff1a;Eureka、Gsched、Nacos&#xff0c;由于当前参与 Nacos 集群的维护和开发工作&#xff0c;期间也参与了 Nacos 社区的一些开发和 Bug Fix 工作&#xff0c;过程中对 Nacos 原理有了一定的积累&am…

专为AI大模型打造的GPU加速器MI300X

作者 I 刘博 54岁神秘女掌门&#xff1a;年薪4亿元&#xff0c;一代女强人 AMD与苏姿丰的名字如今深深绑定在一起。 1969年&#xff0c;苏姿丰出生在中国台湾&#xff1b;同一年&#xff0c;日后与她渊源颇深AMD在硅谷创立。谁也不会想到&#xff0c;她将在几十年后拯救AMD。 …

尚硅谷大数据技术Spark教程-笔记09【SparkStreaming(概念、入门、DStream入门、案例实操、总结)】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【SparkCore&#xff08;概述、快速上手、运行环境、运行架构&#xff09;】尚硅谷大数据技术Spark教程…

js执行顺序和promise.then()案例:

这篇笔记摘录来源&#xff1a; &#x1f449;我是javascript&#xff0c;2分钟彻底弄懂我的执行机制&#xff1f;【JavaScript教程】_哔哩哔哩_bilibili &#x1f449;js执行顺序_前端小白&#xff0c;请多指教的博客-CSDN博客 目录 面试题1&#xff1a; 面试题2: 面试…

java的转换流、压缩流、序列化流、打印流

一、转换流 转换流属于字符流&#xff0c;也是一种高级流&#xff0c;用来包装Reader和Writer。转化流是字符流和字节流之间的桥梁。转换输入流为InputStreamReader&#xff0c;把把字节流转化为字符流&#xff1b;转化输出流为OutputStreamWriter&#xff0c;把字符流转化为字…