js wangEditor富文本编辑器

2023-11-07

<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>wangEditor get HTML</title>
  <link href="https://cdn.bootcdn.net/ajax/libs/normalize/8.0.1/normalize.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/@wangeditor/editor@latest/dist/css/style.css" rel="stylesheet">
  <link href="./css/layout.css" rel="stylesheet">
  <link href="./css/view.css" rel="stylesheet">
 
  <script src="./js/custom-elem.js"></script>
</head>
 
<body>
  <demo-nav title="wangEditor get HTML"></demo-nav>
  <div class="page-container">
    <div class="page-left">
      <demo-menu></demo-menu>
    </div>
    <div class="page-right">
      <!-- 编辑器 DOM -->
      <div style="border: 1px solid #ccc;">
        <div id="editor-toolbar" style="border-bottom: 1px solid #ccc;"></div>
        <div id="editor-text-area" style="height: 350px"></div>
      </div>
 
      <!-- 显示内容 -->
      <div style="margin-top: 20px;">
        <textarea id="editor-content-textarea" style="width: 100%; height: 100px; outline: none;" readonly></textarea>
      </div>
      <div id="editor-content-view" class="editor-content-view"></div>
    </div>
  </div>
 
  <script src="https://cdn.jsdelivr.net/npm/@wangeditor/editor@latest/dist/index.min.js"></script>
  <script>
    const E = window.wangEditor
 
    // 切换语言
    const LANG = location.href.indexOf('lang=en') > 0 ? 'en' : 'zh-CN'
    E.i18nChangeLanguage(LANG)
 
    window.editor = E.createEditor({
      selector: '#editor-text-area',
      html: '<p>hello&nbsp;world</p><p><br></p>',
      config: {
        placeholder: 'Type here...',
        MENU_CONF: {
          uploadImage: {
            fieldName: 'your-fileName',
            base64LimitSize: 10 * 1024 * 1024 // 10M 以下插入 base64
          }
        },
        onChange(editor) {
          const html = editor.getHtml()
          document.getElementById('editor-content-view').innerHTML = html
          document.getElementById('editor-content-textarea').value = html
        }
      }
    })
 
    window.toolbar = E.createToolbar({
      editor,
      selector: '#editor-toolbar',
      config: {}
    })
  </script>
</body>
 
</html>

效果:在这里插入图片描述
如果想调整工具栏的一些功能显示与否,使用下面的配置项。

const toolbarConfig = {
            excludeKeys: ["fullScreen", "uploadVideo","uploadImage"] //此处不需要的工具栏选项
        }
        window.toolbar = E.createToolbar({
            editor,
            selector: '#editor-toolbar',
            config: toolbarConfig
        })
			// 'undo',  // 取消
            // 'redo',  // 重做
            // 'headerSelect',  // 标题类型
            // 'fontFamily',  // 字体类型
            // 'fontSize',  // 字体大小
            // 'lineHeight',  // 行高
            // '|',  // 分割线
            // 'bold',  // 字体加粗
            // 'italic',  // 字体倾斜
            // 'underline',  // 下划线
            // 'through',  // 删除线
            // 'sub',  // 上标
            // 'sup',  // 下标
            // "clearStyle",  // 清除样式
            // 'color',  // 文字颜色
            // 'bgColor',  // 背景色
            // '|',  // 分割线
            // 'indent',  // 增加缩进
            // 'delIndent',  // 减少缩进
            // 'bulletedList',  // 无序列表
            // 'numberedList',  // 有序列表
            // 'justifyLeft',  // 左对齐
            // 'justifyRight',  // 右对齐
            // 'justifyCenter',  // 居中
            // 'justifyJustify',  // 两端对齐
            // '|',  // 分割线
            // 'divider',  // 插入分割线
            // 'insertTable',  // 插入表格
            // "deleteTable",  // 删除表格
            // "insertTableRow",  // 插入表格行
            // "deleteTableRow",  // 删除表格行
            // "insertTableCol",  // 插入表格列
            // "deleteTableCol",  // 删除表格列
            // "emotion",  // 插入表情符号
            // 'blockquote',  // 引用
            // 'codeBlock',  // 代码块
            // 'uploadImage',  // 上传图片
            // "uploadVideo",  // 上传视频
            // "insertImage",  // 插入网络图片
            // "deleteImage",  // 删除图片
            // "editImage",  // 编辑图片
            // "viewImageLink",  // 查看图片链接
            // "imageWidth30",  // 图片宽度设置为30%
            // "imageWidth50",  // 图片宽度设置为50%
            // "imageWidth100",  // 图片宽度设置为100%
            // "insertLink",  // 插入链接
            // "editLink",  // 修改链接
            // "unLink",  // 删除链接
            // "viewLink",  // 查看链接
            // 'fullScreen',  // 全屏
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js wangEditor富文本编辑器 的相关文章

随机推荐

  • 【c++类的默认六个成员函数详解】

    类的六个默认成员函数 构造函数 析构函数 拷贝构造 赋值运算符重载 取地址运算符重载 const修饰的取地址运算符重载 为什么要有这些默认成员函数 如果一个类 在初始化之前就调用了打印函数 则会导致输出的是一个随机值 为了避免这种情况 所以
  • windows程序逆向笔记(一)

    1 吾爱破解 l 按钮 程序运行的日志 插件加载的信息查看 e 按钮 模块信息 程序加载的所有模块 库 都可以看到路径等 双击就可以看到基地址 m 按钮 内存信息 对于 e按钮中 的各个模块的基地址等 t 按钮 线程信息 w 按钮 窗口信息
  • websocket 在 react中的使用全过程

    文章目录 前言 一 前端调用代码 二 前后端联调中的问题 1 连接成功之路 1 完全没成功 2 进入onopen 但是没数据 2 神奇的 userId 三 运用到项目中发现的问题 总结 前言 前一段时间需要做一个关于监控服务器的需求 如果某
  • Java常见的几种设计模式

    单例设计模式 一个类只允许创建一个对象 或者实例 那这个类就是一个单例类 这种设计模式就叫做单例设计模式 1 如何实现一个单例 构造函数需要是 private 访问权限的 这样才能避免外部通过 new 创建实例 考虑对象创建时的线程安全问题
  • 密码学课设实验——序列密码c++实现

    一 实验目的 通过实现简单的线性反馈移位寄存器 LFSR 理解LFSR的工作原理 本原多项式的重要意义 二 实验内容 1 利用C C 语言实现给定的LFSR 2 通过不同初始状态生成相应的序列 并观察它们的周期有什么特点 3 利用生成的序列
  • git 中获取短的 commit hash 值

    本文摘至 http www open open com lib view open1328070367499 html Git 很聪明 它能够通过你提供的前几个字符来识别你想要的那次提交 只要你提供的那部分 SHA 1 不短于四个字符 并且
  • which——查看所使用的一系列命令的程序文件的存放位置

    which命令 1 作用 查看所使用的一系列命令的程序文件的存放位置 2 语法 which 要查找的命令
  • 字节跳动实习记录

    秋招 秋招能拿到字节跳动offer是我没有想到的 暑期只是拿到深圳一家小公司的offer 没有大厂实习经验 秋招迅雷一面挂 腾讯二面挂 能拿到的只有富途和深信服的offer 本打算去富途 但是后面又接到字节跳动的面试通知 原来笔试过了 但是
  • STM32 DMA传输 中断方式配置 源代码

    stm32单片机源程序 include pbdata h void RCC Configuration void void GPIO Configuration void void NVIC Configuration void void
  • jenkins 集成单元测试

    1 jenkins 集成单元测试 1 1先来一张图 趋势图和最新测试结果 出现的前提必须有一次成功的测试通过才能出现 1 2 点击红色 可以看到具体那个单元测试类报错 点到具体的测试类 会显示对应方法 和错误原因 2 配置 pip流水线代码
  • Mysql5.7报错get db conn fail this authentication plugin is not supported

    系统环境CentOS 6 x Mysql5 7 1 前言 在部署open falcon的时候 第一启动有很多模块都失败 查看log日志有如下报错 2019 01 04 10 33 13 db go 22 g InitDB get db co
  • 完全平方数算法题

    题目描述 对于一个序列 牛牛每次可以将序列中任意一个位置上的数乘上任意一个质数 现在他想知道至少需要多少次操作才能使得该序列中的任意两个不同位置的数相乘都为完全平方数 完全平方数 对于x 若其可以写成 i i x i i x
  • 目标检测——Bridging the Gap Between Anchor-based and Anchor-free Detection via ATSS

    question1 1 什么是anchor based anchor free answer 1 目标检测算法一般可分为anchor based anchor free 两者融合类 区别就在于有没有利用anchor提取候选目标框 2 A a
  • QT学生信息管理系统

    QT学生信息管理系统 项目描述 效果图 登录页面 管理员页面 用户页面 数据库表 用户表 学生表 项目描述 使用QT5 14和SQLite3 本项目分为登录界面 管理员界面 用户界面等界面 使用QStackedLayout实现页面布局及切换
  • 10大网络安全攻击手段及防御方法总结(下)

    6 分布式拒绝服务 DDOS DDoS攻击本身不能使恶意黑客突破安全措施 但会令网站暂时或永久掉线 相关数据显示 单次DDOS攻击可令小企业平均损失12 3万美元 大型企业的损失水平在230万美元左右 DDoS旨在用请求洪水压垮目标Web服
  • JAVA求解【乱序整数序列两数之和绝对值最小】

    题目 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大返回 以及绝对值 每种输入只会对应一个答案 但是 数组中同一个元素不
  • 移动端H5页面在微信浏览器内audio无法自动播放问题解决

    相信许多小伙伴都遇见过这话种情况 在微信浏览器内添加的audio 无法自动播放 之前写过好多那种活动页添加的背景音乐都可以自动播放 直到后来ios 增加了限制就出现了这个问题 怎么解决的只需给audio标签增加一个属性就可以解决如下图
  • 二、MySQL入门

    1 如何查看MySQL是否运行 1查看进程 root sc mysql ps awx grep mysqld 12953 pts 1 S 0 00 bin sh usr local mysql bin mysqld safe datadir
  • JVM运行原理及Stack和Heap的实现过程

    Java语言写的源程序通过Java编译器 编译成与平台无关的 字节码程序 class文件 也就是0 1二进制程序 然后在OS之上的Java解释器中解释执行 而JVM是java的核心和基础 在java编译器和os平台之间的虚拟处理器 注 本网
  • js wangEditor富文本编辑器