微信小程序中富文本编辑器的实现

小程序也是有富文本编辑器这个控件的,别说,之前我还真没注意。

官方文档

官方文档中给出的东西倒是不多,具体的代码示例在下图红框中标注的位置:

示例代码大概是这个样子:

通过官方的示例,我这边大概了解了一下微信小程序editor的使用,我这里封装了一个自定义组件:

效果如下图所示:

功能展示大概就是这个样子,我这里放一下我组件的全部代码:

myEditor.js

// api 请求类
const API = require("../../request/api.js").report;
// 公共函数库
const utils = require("../../utils/util.js");
// 加密字符
const constant = require("../../utils/constant.js");
// 双语字典
const languageUtils = require("../../language/languageUtils");
// 获取应用实例
const app = getApp();
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    project_id: {
      type: Number,
      value: "",
    },
    //编辑器默认提示语
    placeholder: {
      type: String,
      value: "开始编辑吧...",
    },
    // 修改时显示内容
    richTextContents: {
      type: String,
      value: "",
    },
    // 编辑的富文本的索引
    index: {
      type: Number,
      value: 0,
    },
  },
  /**
   * 组件的初始数据
   */
  data: {
    // 用户手机键盘得高度,大于0表示打开了键盘
  },
  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * @name: 编辑器初始化完成时触发
     * @author: camellia
     * @date: 20211220
     */
    onEditorReady() {
      let self = this;
      this.triggerEvent("onEditorReady");
      // 获取编辑器实例
      self
        .createSelectorQuery()
        .select("#editor")
        .context((res) => {
          self.editorCtx = res.context;
          self.setContents(self.properties.richTextContents); //设置富文本内容
        })
        .exec();
    },
    /**
     * @name: 点击工具栏格式化编辑文本
     * @author: camellia
     * @date: 20211220
     */
    format(e) {
      let self = this;
      let { name, value } = e.target.dataset;
      // 富文本编辑器格式化内容方法
      self.editorCtx.format(name, value);
    },
    /**
     * @name: 工具栏选项选中,图标出现选中样式
     * @author: camellia
     * @date: 20211220
     */
    onStatusChange(e) {
      let self = this;
      self.setData({
        formats: e.detail,
      });
    },
    /**
     * @name: 设置富文本内容
     * @author: camellia
     * @date: 2021-12-23
     * @param:	rechtext	string	富文本内容
     */
    setContents(rechtext)
    {
      this.editorCtx.setContents({
        html: rechtext,
        success: (res) => {
          // 富文本内容设置成功
          // console.log("[setContents success]", res);
        },
      });
    },
    /**
     * @name: 富文本编辑器输入时,获取值
     * @author: camellia
     * @date: 20211220
     */
    getEditorContent()
    {
      let self = this;
      // 富文本编辑器获取内容方法
      self.editorCtx.getContents({
        success: (res) => {
          let array = [];
          array["html"] = res.html;
          array["index"] = self.properties.index;
          // 通过自定义事件把内容传到父组件
          self.triggerEvent("getEditorValue", array);
        },
      });
    },

  },
});

myEditor.json

{
  "component": true,
  "usingComponents": {}
}

myEditor.wxss

@import "./icon/icon.wxss";

.ql-container{
    padding: 12rpx;
    border: 1rpx solid #707070;

}
/* 工具栏 */
.toolbar {
    z-index: 999;
    box-sizing: border-box;
    padding: 0 20rpx;
    height: 100rpx;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border: 2rpx solid #ECECEC;
    border-left: none;
    border-right: none;
    background-color: #FFFFFF;
}
/* 工具栏点击时出现选中样式 */
.ql-active {
    color:  #22C704;
}

myEditor.wxml

<view class="toolbar" catchtouchend="format">
      <i class="iconfont icon-charutupian" catchtouchend="insertImage"></i>
      <i class="iconfont icon-format-header-2 {{formats.header === 2 ? 'ql-active' : ''}}" data-name="header" data-value="{{2}}"></i>
      <i class="iconfont icon-format-header-3 {{formats.header === 3 ? 'ql-active' : ''}}" data-name="header" data-value="{{3}}"></i>
      <i class="iconfont icon-zitijiacu {{formats.bold ? 'ql-active' : ''}}" data-name="bold"></i>
      <i class="iconfont icon-zitixieti {{formats.italic ? 'ql-active' : ''}}" data-name="italic"></i>
      <i class="iconfont icon-zitixiahuaxian {{formats.underline ? 'ql-active' : ''}}" data-name="underline"></i>
      <i class="iconfont icon--checklist" data-name="list" data-value="check"></i>
      <i class="iconfont icon-youxupailie {{formats.list === 'ordered' ? 'ql-active' : ''}}" data-name="list" data-value="ordered"></i>
      <i class="iconfont icon-wuxupailie {{formats.list === 'bullet' ? 'ql-active' : ''}}" data-name="list" data-value="bullet"></i>
</view>
<editor style="height:auto; min-height:240rpx;"
        id="editor"
        class="ql-container"
        bindinput="getEditorContent"
        bindready="onEditorReady"
        bindstatuschange="onStatusChange">
</editor>

以上就是微信小程序中富文本编辑器的实现的详细内容,更多关于小程序富文本编辑器的资料请关注我们其它相关文章!

(0)

相关推荐

  • 微信小程序实现富文本图片宽度自适应的方法

    引言:在微信小程序里,比如商品展示页面的商品详情会有图片展示,PC端设置的商品详情是PC端的宽度,所以在小程序里图片会显示不全,这时就应该做相应的处理,使小程序里图片显示正确 思路 把图片的宽度改为手机屏幕对应的宽度 微信小程序需要知道的知识 需要知道微信小程序里有自己的宽度标准,单位为rpx: 针对所有不同尺寸的浏览器,微信小程序里规定屏幕宽为750rpx: 解决 WXML <view class='html_detail'> <rich-text nodes='{{artical}}

  • 微信小程序解析富文本过程详解

    前言 最近公司在开发OTA微信小程序,一些页面的详情内容是HTML富文本格式的的,但是微信小程序不能直接解析HTML,需要将内容中的HTML标签转换成微信小程序所支持的标签. 开始的时候想过自己写方法来替换标签,后来找到了一个很好用的插件:WxParse. 今天分享给大家,Github地址:https://github.com/icindy/wxParse 使用WxParse解析富文本数据 1.将下载下来的插件文件夹复制到我们的项目根目录下(其中emojis文件可根据自己所需决定要或者不要,其他

  • 微信小程序rich-text富文本用法实例分析

    本文实例讲述了微信小程序rich-text富文本用法.分享给大家供大家参考,具体如下: rich-text是一个新增的微信小程序插件,从基础库1.4.0开始,低版本需要做兼容处理 nodes属性可为Array和String类型,但推荐使用Array.由于String类型最终也会转为Array类型 nodes分为支持两种节点,分别为元素节点(type=node ,默认为元素节点)和文本节点(type=text) 元素节点 name 标签名 String 是 支持部分受信任的HTML节点 attrs

  • 微信小程序整合使用富文本编辑器的方法详解

    本文实例讲述了微信小程序整合使用富文本编辑器的方法.分享给大家供大家参考,具体如下: 使用WxParse插件实现小程序的富文本显示 ,下载地址:富文本插件WxParse 具体使用步骤: 1. 复制插件文件夹到项目根目录,emojis是表情包,可选择性删除 2. 在.js文件中引入WxParse模块 var WxParse= require('../../../wxParse/wxParse.js'); 3. 在.wxss文件中引入WxParse.wxss样式,也可以在app.wxss中引入 @i

  • 小程序富文本提取图片可放大缩小

    本文实例为大家分享了小程序富文本提取图片可放大缩小的具体代码,供大家参考,具体内容如下 启发: 因为最近有需求说在小程序商品的详情页里所有图片可以放大缩小,网上好像不太好找,就写了篇博客,供大家参考 step1 获取到富文本内容,怎么获取就是请求数据嘛,这个不在赘述了. var nodes = res.data.data.content; step2 检测 nodes中是否有img标签,这个有很多方法,我这里用的indexOf if (nodes.indexOf("src") >

  • 微信小程序中富文本编辑器的实现

    小程序也是有富文本编辑器这个控件的,别说,之前我还真没注意. 官方文档 官方文档中给出的东西倒是不多,具体的代码示例在下图红框中标注的位置: 示例代码大概是这个样子: 通过官方的示例,我这边大概了解了一下微信小程序editor的使用,我这里封装了一个自定义组件: 效果如下图所示: 功能展示大概就是这个样子,我这里放一下我组件的全部代码: myEditor.js // api 请求类 const API = require("../../request/api.js").report;

  • 微信小程序富文本渲染引擎的详解

    微信小程序富文本渲染引擎的详解 步骤 把 wxParser 目录放到小程序项目的根目录下 在需要富文本解析的 WXML 内引入 wxParser/index.wxml 在页面 JS 文件内使用 wxParser.parse(options) 方法解析 HTML 内容 在小程序项目根目录的 app.wxss 内引入 wxParser 的默认样式库 wxParser.parse(options) 方法的 options 参数说明 参数名 类型 必填 描述 bind String 是 要绑定的数据名称

  • 微信小程序 富文本转文本实例详解

    微信小程序-富文本转文本 最近小程序这么火,我也来搞搞.发现了一个恶心的问题.小程序没有组件能支持富文本内容的,改接口又不太合适,于是有了这问,没技术含量纯粹记录 首先我们看眼没有被格式的富文本显示: *.wxml内代码.content是富文本内容 <view> <text>{{content}}</text> </view> 显示结果: 由以上图片看到,小程序无法解析html文件 我们需要处理html富文本内容,让其显示好看点 下面直接上代码了,主要功能就

  • 基于Vue实现微信小程序的图文编辑器

    由于微信小程序不能使用常规的图文编辑器(比如百度的UEditor )编辑新闻内容之类的,所以用vue写了个针对小程序用的图文编辑器.效果如下 多图上传图片用到了  ajaxfileupload.js (不知道哪位仁兄写的,拿来用了,很好用) 最终形成一串Json数据(转成字符串,传入后台存入数据库,小程序端用JSON.parse 转成JSON ,按照后台一样的方式渲染即可[小程序端代码还没写,后面再贴出来吧]) json格式如 [{"mytype":1,"content&qu

  • 微信小程序纯文本实现@功能

    前言 大家肯定对@功能不陌生,在如今的各大社交软件中它是一种不可或缺的功能.实现@人的功能并不复杂,只需将@人员的id传给后端,后端下发通知即可.主要的复杂点在于一键删除功能与变色功能,web端可以使用现成库 caret.js 或者 At.js 来实现.但笔者需要在小程序中实现这个功能,而且在 textarea 标签里实现,当然@人名的变色功能自然而然就砍掉了. 准备工作 怎么来实现一键删除呢?首先想到对@人名前后用特殊符号标记+正则来实现,但结果不是很理想,扩展性也比较差,如果还要匹配话题之类

  • 微信小程序实现文本输入弹窗

    场景 用户进入界面弹出输入窗口,需要用户输入内容,如果取消则跳转到指定界面,重新进入还会弹出窗口,只有输入正确内容才能正式进入此界面 实现 wxml <view class="container">   <view wx:if="{{!completed}}">     <view class='toast-box'>       <view class='toastbg'></view>       &l

  • 微信小程序调用PHP后台接口 解析纯html文本

    微信小程序调用PHP后台接口,解析纯html文本,效果图片预览 1.微信js动态传参: wx.request({ url: 'https://m.****.com/index.php/Home/Xiaoxxf/activity_detail?a_id='+options.id,//含富文本html data: { is_detail:1 }, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT heade

  • 微信小程序模版渲染详解

    微信小程序的界面程序支持html语法,多加了一部分标签,如view.block.templete等. 模版渲染 index.wxml <view> <p>{{helloWord}}</p> </view> 其中{{}}里面包含的内容你可以理解为一个变量,怎么让程序解析出{{helloWord}}变量 在index.js 中注册这个变量 var json = { data:{ "helloWord" : "hello world&

  • 微信小程序实战项目之富文本编辑器实现

    目录 前言 1. 实现效果 2. 创建发布页面,实现基本布局 3. 实现编辑区操作栏的功能 3.1. 实现文本加粗.斜体.文本下划线.左对齐.居中对齐.右对齐 3.2. 实现撤销.恢复.插入图片.删除操作 4. 参考 总结 前言 这是我参加掘金启航计划的第三篇文章,这次总结的是实现一个简单的富文本编辑器,相信阅读文章后,观众老爷们,能够实现富文本编辑器,在微信小程序中发布自己的文章,希望观众老爷们多多支持! 1. 实现效果 实现的效果如下图: 实现的功能点如下: 文本加粗.斜体.下划线,对齐方式

随机推荐