diff --git a/uni_modules/mp-html/README.md b/uni_modules/mp-html/README.md index 7626289..784800e 100644 --- a/uni_modules/mp-html/README.md +++ b/uni_modules/mp-html/README.md @@ -1,194 +1,259 @@ -## 为减小组件包的大小,默认组件包中不包含编辑、latex 公式等扩展功能,需要使用扩展功能的请参考下方的 插件扩展 栏的说明 - -## 功能介绍 -- 全端支持(含 `v3、NVUE`) -- 支持丰富的标签(包括 `table`、`video`、`svg` 等) -- 支持丰富的事件效果(自动预览图片、链接处理等) -- 支持设置占位图(加载中、出错时、预览时) -- 支持锚点跳转、长按复制等丰富功能 -- 支持大部分 *html* 实体 -- 丰富的插件(关键词搜索、内容编辑、`latex` 公式等) -- 效率高、容错性强且轻量化 - -查看 [功能介绍](https://jin-yufeng.gitee.io/mp-html/#/overview/feature) 了解更多 - -## 使用方法 -- `uni_modules` 方式 - 1. 点击右上角的 `使用 HBuilder X 导入插件` 按钮直接导入项目或点击 `下载插件 ZIP` 按钮下载插件包并解压到项目的 `uni_modules/mp-html` 目录下 - 2. 在需要使用页面的 `(n)vue` 文件中添加 - ```html - - - ``` - ```javascript - export default { - data() { - return { - html: '
Hello World!
' - } - } - } - ``` - 3. 需要更新版本时在 `HBuilder X` 中右键 `uni_modules/mp-html` 目录选择 `从插件市场更新` 即可 - -- 源码方式 - 1. 从 [github](https://github.com/jin-yufeng/mp-html/tree/master/dist/uni-app) 或 [gitee](https://gitee.com/jin-yufeng/mp-html/tree/master/dist/uni-app) 下载源码 - 插件市场的 **非 uni_modules 版本** 无法更新,不建议从插件市场获取 - 2. 在需要使用页面的 `(n)vue` 文件中添加 - ```html - - ``` - ```javascript - import mpHtml from '@/components/mp-html/mp-html' - export default { - // HBuilderX 2.5.5+ 可以通过 easycom 自动引入 - components: { - mpHtml - }, - data() { - return { - html: '
Hello World!
' - } - } - } - ``` - -- npm 方式 - 1. 在项目根目录下执行 - ```bash - npm install mp-html - ``` - 2. 在需要使用页面的 `(n)vue` 文件中添加 - ```html - - ``` - ```javascript - import mpHtml from 'mp-html/dist/uni-app/components/mp-html/mp-html' - export default { - // 不可省略 - components: { - mpHtml - }, - data() { - return { - html: '
Hello World!
' - } - } - } - ``` - 3. 需要更新版本时执行以下命令即可 - ```bash - npm update mp-html - ``` - - 使用 *cli* 方式运行的项目,通过 *npm* 方式引入时,需要在 *vue.config.js* 中配置 *transpileDependencies*,详情可见 [#330](https://github.com/jin-yufeng/mp-html/issues/330#issuecomment-913617687) - 如果在 **nvue** 中使用还要将 `dist/uni-app/static` 目录下的内容拷贝到项目的 `static` 目录下,否则无法运行 - -查看 [快速开始](https://jin-yufeng.gitee.io/mp-html/#/overview/quickstart) 了解更多 - -## 组件属性 - -| 属性 | 类型 | 默认值 | 说明 | -|:---:|:---:|:---:|---| -| container-style | String | | 容器的样式([2.1.0+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v210)) | -| content | String | | 用于渲染的 html 字符串 | -| copy-link | Boolean | true | 是否允许外部链接被点击时自动复制 | -| domain | String | | 主域名(用于链接拼接) | -| error-img | String | | 图片出错时的占位图链接 | -| lazy-load | Boolean | false | 是否开启图片懒加载 | -| loading-img | String | | 图片加载过程中的占位图链接 | -| pause-video | Boolean | true | 是否在播放一个视频时自动暂停其他视频 | -| preview-img | Boolean | true | 是否允许图片被点击时自动预览 | -| scroll-table | Boolean | false | 是否给每个表格添加一个滚动层使其能单独横向滚动 | -| selectable | Boolean | false | 是否开启文本长按复制 | -| set-title | Boolean | true | 是否将 title 标签的内容设置到页面标题 | -| show-img-menu | Boolean | true | 是否允许图片被长按时显示菜单 | -| tag-style | Object | | 设置标签的默认样式 | -| use-anchor | Boolean | false | 是否使用锚点链接 | - -查看 [属性](https://jin-yufeng.gitee.io/mp-html/#/basic/prop) 了解更多 - -## 组件事件 - -| 名称 | 触发时机 | -|:---:|---| -| load | dom 树加载完毕时 | -| ready | 图片加载完毕时 | -| error | 发生渲染错误时 | -| imgtap | 图片被点击时 | -| linktap | 链接被点击时 | -| play | 音视频播放时 | - -查看 [事件](https://jin-yufeng.gitee.io/mp-html/#/basic/event) 了解更多 - -## api -组件实例上提供了一些 `api` 方法可供调用 - -| 名称 | 作用 | -|:---:|---| -| in | 将锚点跳转的范围限定在一个 scroll-view 内 | -| navigateTo | 锚点跳转 | -| getText | 获取文本内容 | -| getRect | 获取富文本内容的位置和大小 | -| setContent | 设置富文本内容 | -| imgList | 获取所有图片的数组 | -| pauseMedia | 暂停播放音视频([2.2.2+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v222)) | -| setPlaybackRate | 设置音视频播放速率([2.4.0+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v240)) | - -查看 [api](https://jin-yufeng.gitee.io/mp-html/#/advanced/api) 了解更多 - -## 插件扩展 -除基本功能外,本组件还提供了丰富的扩展,可按照需要选用 - -| 名称 | 作用 | -|:---:|---| -| audio | 音乐播放器 | -| editable | 富文本 **编辑**([示例项目](https://mp-html.oss-cn-hangzhou.aliyuncs.com/editable.zip)) | -| emoji | 解析 emoji | -| highlight | 代码块高亮显示 | -| markdown | 渲染 markdown | -| search | 关键词搜索 | -| style | 匹配 style 标签中的样式 | -| txv-video | 使用腾讯视频 | -| img-cache | 图片缓存 by [@PentaTea](https://github.com/PentaTea) | -| latex | 渲染 latex 公式 by [@Zeng-J](https://github.com/Zeng-J) | - -从插件市场导入的包中 **不含有** 扩展插件,使用插件需通过微信小程序 `富文本插件` 获取或参考以下方法进行打包: -1. 获取完整组件包 - ```bash - npm install mp-html - ``` -2. 编辑 `tools/config.js` 中的 `plugins` 项,选择需要的插件 -3. 生成新的组件包 - 在 `node_modules/mp-html` 目录下执行 - ```bash - npm install - npm run build:uni-app - ``` -4. 拷贝 `dist/uni-app` 中的内容到项目根目录 - -查看 [插件](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin) 了解更多 - -## 关于 nvue -`nvue` 使用原生渲染,不支持部分 `css` 样式,为实现和 `html` 相同的效果,组件内部通过 `web-view` 进行渲染,性能上差于原生,根据 `weex` 官方建议,`web` 标签仅应用在非常规的降级场景。因此,如果通过原生的方式(如 `richtext`)能够满足需要,则不建议使用本组件,如果有较多的富文本内容,则可以直接使用 `vue` 页面 -由于渲染方式与其他端不同,有以下限制: -1. 不支持 `lazy-load` 属性 -2. 视频不支持全屏播放 -3. 如果在 `flex-direction: row` 的容器中使用,需要给组件设置宽度或设置 `flex: 1` 占满剩余宽度 - -纯 `nvue` 模式下,[此问题](https://ask.dcloud.net.cn/question/119678) 修复前,不支持通过 `uni_modules` 引入,需要本地引入(将 [dist/uni-app](https://github.com/jin-yufeng/mp-html/tree/master/dist/uni-app) 中的内容拷贝到项目根目录下) - -## 立即体验 -![富文本插件](https://mp-html.oss-cn-hangzhou.aliyuncs.com/qrcode.jpg) - -## 问题反馈 -遇到问题时,请先查阅 [常见问题](https://jin-yufeng.gitee.io/mp-html/#/question/faq) 和 [issue](https://github.com/jin-yufeng/mp-html/issues) 中是否已有相同的问题 -可通过 [issue](https://github.com/jin-yufeng/mp-html/issues/new/choose) 、插件问答或发送邮件到 [mp_html@126.com](mailto:mp_html@126.com) 提问,不建议在评论区提问(不方便回复) -提问请严格按照 [issue 模板](https://github.com/jin-yufeng/mp-html/issues/new/choose) ,描述清楚使用环境、`html` 内容或可复现的 `demo` 项目以及复现方式,对于 **描述不清**、**无法复现** 或重复的问题将不予回复 - -欢迎加入 `QQ` 交流群: -群1(已满):`699734691` -群2(已满):`778239129` -群3:`960265313` - -查看 [问题反馈](https://jin-yufeng.gitee.io/mp-html/#/question/feedback) 了解更多 +# mp-html + +> 一个强大的小程序富文本组件 + +![star](https://img.shields.io/github/stars/jin-yufeng/mp-html) +![forks](https://img.shields.io/github/forks/jin-yufeng/mp-html) +[![npm](https://img.shields.io/npm/v/mp-html)](https://www.npmjs.com/package/mp-html) +![downloads](https://img.shields.io/npm/dt/mp-html) +[![Coverage Status](https://coveralls.io/repos/github/jin-yufeng/mp-html/badge.svg?branch=master)](https://coveralls.io/github/jin-yufeng/mp-html?branch=master) +![license](https://img.shields.io/github/license/jin-yufeng/mp-html) +[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) + +## 功能介绍 +- 支持在多个主流的小程序平台和 `uni-app` 中使用 +- 支持丰富的标签(包括 `table`、`video`、`svg` 等) +- 支持丰富的事件效果(自动预览图片、链接处理等) +- 支持设置占位图(加载中、出错时、预览时) +- 支持锚点跳转、长按复制等丰富功能 +- 支持大部分 *html* 实体 +- 丰富的插件(关键词搜索、内容编辑、`latex` 公式等) +- 效率高、容错性强且轻量化(`≈25KB`,`9KB gzipped`) + +查看 [功能介绍](https://jin-yufeng.github.io/mp-html/#/overview/feature) 了解更多 + +## 使用方法 +### 原生平台 +- `npm` 方式 + 1. 在项目目录下安装组件包 + + ```bash + npm install mp-html + ``` + 2. 开发者工具中勾选 `使用 npm 模块`(若没有此选项则不需要)并点击 `工具 - 构建 npm` + 3. 在需要使用页面的 `json` 文件中添加 + + ```json + { + "usingComponents": { + "mp-html": "mp-html" + } + } + ``` + 4. 在需要使用页面的 `wxml` 文件中添加 + + ```html + + ``` + 5. 在需要使用页面的 `js` 文件中添加 + + ```javascript + Page({ + onLoad () { + this.setData({ + html: '
Hello World!
' + }) + } + }) + ``` +- 源码方式 + 1. 将源码中对应平台的代码包(`dist/platform`)拷贝到 `components` 目录下,更名为 `mp-html` + 2. 在需要使用页面的 `json` 文件中添加 + + ```json + { + "usingComponents": { + "mp-html": "/components/mp-html/index" + } + } + ``` + + 后续步骤同上 + +查看 [快速开始](https://jin-yufeng.github.io/mp-html/#/overview/quickstart) 了解更多 + +### uni-app +- 源码方式 + 1. 将源码中 `dist/uni-app` 内的内容拷贝到项目根目录下 + 可以直接通过 [插件市场](https://ext.dcloud.net.cn/plugin?id=805) 引入 + 2. 在需要使用页面的 `vue` 文件中添加 + + ```vue + + + ``` +- `npm` 方式 + 1. 在项目目录下安装组件包 + + ```bash + npm install mp-html + ``` + 2. 在需要使用页面的 `vue` 文件中添加 + + ```vue + + + ``` + + 使用 `cli` 方式运行的项目,通过 `npm` 方式引入时,需要在 `vue.config.js` 中配置 `transpileDependencies`,详情可见 [#330](https://github.com/jin-yufeng/mp-html/issues/330#issuecomment-913617687) + 如果在 `nvue` 中使用还要将 `dist/uni-app/static` 目录下的内容拷贝到项目的 `static` 目录下,否则无法运行 + +查看 [快速开始](https://jin-yufeng.github.io/mp-html/#/overview/quickstart) 了解更多 + +## 组件属性 + +| 属性 | 类型 | 默认值 | 说明 | +|:---:|:---:|:---:|---| +| container-style | String | | 容器的样式([2.1.0+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v210)) | +| content | String | | 用于渲染的 html 字符串 | +| copy-link | Boolean | true | 是否允许外部链接被点击时自动复制 | +| domain | String | | 主域名(用于链接拼接) | +| error-img | String | | 图片出错时的占位图链接 | +| lazy-load | Boolean | false | 是否开启图片懒加载 | +| loading-img | String | | 图片加载过程中的占位图链接 | +| pause-video | Boolean | true | 是否在播放一个视频时自动暂停其他视频 | +| preview-img | Boolean | true | 是否允许图片被点击时自动预览 | +| scroll-table | Boolean | false | 是否给每个表格添加一个滚动层使其能单独横向滚动 | +| selectable | Boolean | false | 是否开启文本长按复制 | +| set-title | Boolean | true | 是否将 title 标签的内容设置到页面标题 | +| show-img-menu | Boolean | true | 是否允许图片被长按时显示菜单 | +| tag-style | Object | | 设置标签的默认样式 | +| use-anchor | Boolean | false | 是否使用锚点链接 | + +查看 [属性](https://jin-yufeng.github.io/mp-html/#/basic/prop) 了解更多 + +## 组件事件 + +| 名称 | 触发时机 | +|:---:|---| +| load | dom 树加载完毕时 | +| ready | 图片加载完毕时 | +| error | 发生渲染错误时 | +| imgtap | 图片被点击时 | +| linktap | 链接被点击时 | +| play | 音视频播放时([2.3.0+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v230)) | +| pause | 音视频暂停时([2.5.2+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v252)) | +| fullscreenchange | 视频全屏变化时([2.5.2+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v252)) | + +查看 [事件](https://jin-yufeng.github.io/mp-html/#/basic/event) 了解更多 + +## api +组件实例上提供了一些 `api` 方法可供调用 + +| 名称 | 作用 | +|:---:|---| +| in | 将锚点跳转的范围限定在一个 scroll-view 内 | +| navigateTo | 锚点跳转 | +| getText | 获取文本内容 | +| getRect | 获取富文本内容的位置和大小 | +| setContent | 设置富文本内容 | +| imgList | 获取所有图片的数组 | +| pauseMedia | 暂停播放音视频([2.2.2+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v222)) | +| setPlaybackRate | 设置音视频播放速率([2.4.0+](https://jin-yufeng.github.io/mp-html/#/changelog/changelog#v240)) | + +查看 [api](https://jin-yufeng.github.io/mp-html/#/advanced/api) 了解更多 + +## 插件扩展 +除基本功能外,本组件还提供了丰富的扩展,可按照需要选用 + +| 名称 | 作用 | +|:---:|---| +| audio | 音乐播放器 | +| editable | 富文本编辑 | +| emoji | 解析 emoji | +| highlight | 代码块高亮显示 | +| markdown | 渲染 markdown | +| search | 关键词搜索 | +| style | 匹配 style 标签中的样式 | +| txv-video | 使用腾讯视频 | +| img-cache | 图片缓存 by [@PentaTea](https://github.com/PentaTea) | +| latex | 渲染 latex 公式 by [@Zeng-J](https://github.com/Zeng-J) | +| card | 卡片展示 by [@whoooami](https://github.com/whoooami) | + +查看 [插件](https://jin-yufeng.github.io/mp-html/#/advanced/plugin) 了解更多 + +## 使用案例 + +| [官方示例](https://github.com/jin-yufeng/mp-html-demo) | 欢喜商城 | 多么生活 | 食法查 | 微慕 | 科学复习 | +|:---:|:---:|:---:|:---:|:---:|:---:| +| ![富文本插件](docs/assets/case/富文本插件.jpg) | ![欢喜商城](docs/assets/case/欢喜商城.png) | ![多么生活](docs/assets/case/多么生活.jpg) | ![食法查](docs/assets/case/食法查.png) | ![微慕](docs/assets/case/微慕.jpg) | ![科学复习](docs/assets/case/科学复习.png) | + +| [程序员技术之旅](https://github.com/fendoudebb/z-blog-wx) | 典典博客 | 优秀笔记 | 同城共享书 | [技术源 share](https://github.com/wangsrGit119/mini-blog-halo) | 你的代码写的真棒 | +|:---:|:---:|:---:|:---:|:---:|:---:| +| ![程序员技术之旅](docs/assets/case/程序员技术之旅.jpg) | ![典典博客](docs/assets/case/典典博客.jpg) | ![优秀笔记](docs/assets/case/优秀笔记.jpg) | ![同城共享书](docs/assets/case/同城共享书.jpg) | ![技术源share](docs/assets/case/技术源share.jpg) | ![你的代码写的真棒](docs/assets/case/你的代码写的真棒.jpg) | + +| 谛否 | 小莫唐尼 | [模版演示](https://github.com/zhihuifanqiechaodan/miniprogram-template) | AI瓦力 | 豆流便签 | 前端八股通 | +|:---:|:---:|:---:|:---:|:---:|:---:| +| ![谛否](docs/assets/case/谛否.jpg) | ![小莫唐尼](docs/assets/case/小莫唐尼.png) | ![MiniProgram模版演示](docs/assets/case/MiniProgram模版演示.jpg) | ![AI瓦力](docs/assets/case/AI瓦力.jpg) | ![豆流便签](docs/assets/case/豆流便签.jpg) | ![前端八股通](docs/assets/case/前端八股通.jpg) | + +以上排名不分先后,更多可见 [使用案例收集](https://github.com/jin-yufeng/mp-html/issues/27)(欢迎添加) + +## 许可与支持 +- 许可 + 您可以免费的使用(包括商用)、复制或修改本组件 [MIT License](https://github.com/jin-yufeng/mp-html/blob/master/LICENSE) + 在用于生产环境前务必经过充分测试,由插件 `bug` 带来的损失概不负责(可以自行修改源码) + +- 联系 + 欢迎加入 `QQ` 交流群: + 群1(已满):`699734691` + 群2(已满):`778239129` + 群3:`960265313` + ![group](docs/assets/group.jpg) + +- 支持 + ![支持](docs/assets/sponsor.png) + +## 更新日志 +- v2.5.2 (20251214) + 1. `A` 增加了音视频暂停 [pause](https://jin-yufeng.github.io/mp-html/#/basic/event?id=pause) 和视频全屏 [fullscreenchange](https://jin-yufeng.github.io/mp-html/#/basic/event?id=fullscreenchange) 事件 [#495](https://github.com/jin-yufeng/mp-html/issues/495) [#595](https://github.com/jin-yufeng/mp-html/issues/595) + 2. `U` 优化了 [流式输出](https://jin-yufeng.github.io/mp-html/#/overview/feature?id=stream) 效果,通过差量更新解决闪烁问题 [详细](https://github.com/jin-yufeng/mp-html/issues/657) + 3. `U` `latex` 插件更新字体文件 [详细](https://github.com/jin-yufeng/mp-html/pull/647) by [@JiuyeXD](https://github.com/JiuyeXD) + 4. `U` 更新 `markdown` 插件中 `marked.js` 版本 [详细](https://github.com/jin-yufeng/mp-html/issues/672) + 5. `U` 微信小程序替换遗漏的废弃 `api` `getSystemInfoSync` [详细](https://github.com/jin-yufeng/mp-html/pull/653) by [@zcSkr](https://github.com/zcSkr) + 6. `F` 修复了 `markdown` 插件加粗文本遇到中文符号无效的问题 [详细](https://github.com/jin-yufeng/mp-html/pull/664) by [@qp666](https://github.com/qp666) + +- v2.5.1 (20250420) + 1. `U` `uni-app` 包适配鸿蒙 `APP` [详细](https://github.com/jin-yufeng/mp-html/issues/615) + 2. `U` 微信小程序替换废弃 `api` `getSystemInfoSync` [详细](https://github.com/jin-yufeng/mp-html/issues/613) + 3. `F` 修复了微信小程序 `glass-easel` 框架下真机换行异常的问题 [详细](https://github.com/jin-yufeng/mp-html/pull/607) by [@PaperStrike](https://github.com/PaperStrike) + 4. `F` 修复了 `uni-app` 包 `app` 端播放视频可能报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/617) + 5. `F` 修复了 `latex` 插件可能出现 `xxx can be used only in display mode` 的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/632) + 6. `F` 修复了 `uni-app` 包 `latex` 公式可能不显示的问题 [#599](https://github.com/jin-yufeng/mp-html/issues/599)、[#627](https://github.com/jin-yufeng/mp-html/issues/627) + + 从 `1.x` 的升级方法可见 [更新指南](https://jin-yufeng.github.io/mp-html/#/changelog/changelog?id=v200) + +查看 [更新日志](https://jin-yufeng.github.io/mp-html/#/changelog/changelog) 了解更多 diff --git a/uni_modules/mp-html/components/mp-html/mp-html.vue b/uni_modules/mp-html/components/mp-html/mp-html.vue index 5d1d36d..ec6d7f5 100644 --- a/uni_modules/mp-html/components/mp-html/mp-html.vue +++ b/uni_modules/mp-html/components/mp-html/mp-html.vue @@ -1,498 +1,500 @@ - - - - - + + + + + diff --git a/uni_modules/mp-html/components/mp-html/node/node.vue b/uni_modules/mp-html/components/mp-html/node/node.vue index 09252fd..4733445 100644 --- a/uni_modules/mp-html/components/mp-html/node/node.vue +++ b/uni_modules/mp-html/components/mp-html/node/node.vue @@ -1,587 +1,624 @@ -