在react(antd-pro)中接入秀米
*已放弃该方案,使用wangeditor+秀米

  1. 打包ueditor
  2. 在react将打包后的ueditor文件夹作为静态资源放入项目public目录下。
  3. 使用react-ueditor-wrap组件在页面使用ueditor。这里有一个坑,若使用onChange修改组件value值,编辑器光标位置会被重置,在表单中使用时要引入另一个值记录编辑器内容。
  4. 引入秀米,秀米官方给了在ueditor中使用的文档。秀米图文排版UEditor插件示例。在react中引入时iframeUrl无法按官方文档中的以路径的方式,修改路径为文件url,因为文件的地址都在react-ueditor-wrap上定义,我把html的链接也放在react中进行定义。只需要在加载组件前设置window.xiumi_iframeUrl的值。
  5. 到这一步我们已经可以在ueditor上点击秀米的图标编辑并添加至ueditor中。这里有一个官方文档没给出的问题,xxs过滤白名单上要额外修改img,添加style,防止style被过滤掉
  6. 由于在项目中第一次加载Ueditor会有延迟,所以监听window.UE对象添加loading动画。
由于某些原因,图片的转存也需要在前端直接处理~

思路大概是: 在秀米文档添加到ueditor的事件上获取添加的富文本value,提取所有的秀米图片链接,转存至自己的服务器,然后替换原来的图片地址。图片上传时会有图片防盗链的跨域问题。在html加入 <meta name="referrer" content="never" />可以解决。图片上传使用了oss,oss-sdk的引入放在UE对象加载的地方使用Ueditor提供的utils.loadFile函数。加载后获取ossToken存储在全局对象中,在iframe中使用parent.window获取。

window.addEventListener('message',function(event) {if (event.origin == xiumi_url) {var reg = /(http|https):\/\/[^\.]+\.xiumi\.us\/[^\.]+\.(png|gif|jpg|jpeg|bmp)/gi;var insertData = event.data.replace(/(\?x-oss[^\"\'\)\>\&]*)/g, '');if (insertData.match(reg) && insertData.match(reg).length) {var imgs = unique(insertData.match(reg)); // 去重var _ossData = parent.window.OssData;var OSS = parent.window.OSS;var client = new OSS({region: _ossData.region, //你的oss地址accessKeyId: _ossData.accessKeyId, //你的akaccessKeySecret: _ossData.accessKeySecret, //你的secretstsToken: _ossData.stsToken, //这里我暂时没用,注销掉bucket: _ossData.bucket, //你的oss名字});console.log('images', imgs);imgs.forEach((i, idx) => {uploadImg(i, client, function(link) {if (link) {// var _reg = new RegExp(i+'([^\"\'\)]*)',"ig");var _reg = new RegExp(i, 'ig');insertData = insertData.replace(_reg, link);}if (idx === imgs.length - 1) {console.log('alreadyReplace', !reg.test(insertData));editor.execCommand('insertHtml', insertData);dialog.close();}});});} else {editor.execCommand('insertHtml', event.data);dialog.close();}}},false,
);


另记录两个bug:
  1. 秀米未登录时编辑自定义文字内容不会被添加
  2. 秀米添加到ueditor时光标所在元素不能为secetion

React 接入 Ueditor + xiumi相关推荐

  1. React接入Sentry.js

    // 需要安装的库 yarn add raven-js --save yarn add raven-for-redux --save // 在创建store的地方 import * as Raven ...

  2. react 接入企业微信登录组件

    需求简述 把某web登录页替换成使用企业微信的扫码登录. 具体实现 自建应用:登录企微后台/应用管理,滑到最底部,创建应用并填写应用相关信息: 2. 创建成功之后,进入应用详情,配置可信域名以及授权登 ...

  3. react全家桶从0到1(react-router4、redux、redux-saga)

    本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目.文中针对react.webpack.babel.react-route.redux.redux-saga的核心配置会加以讲解, ...

  4. 前端vue适配不同的分辨率_浅析 React / Vue 跨端渲染原理与实现

    当下的前端同学对 React 与 Vue 的组件化开发想必不会陌生,RN 与 Weex 的跨界也常为我们所津津乐道.UI 框架在实现这样的跨端渲染时需要做哪些工作,其技术方案能否借鉴乃至应用到我们自己 ...

  5. edui 富文本编辑_React中使用UEditor百度富文本的方法

    前言 本文将介绍笔者在React的项目中使用百度的富文本编辑器Ueditor的过程.注意本文不提供一条龙式的使用方法,只是将使用过程中的一些实现思路进行总结,供以参考.react项目中导入uedito ...

  6. 很详细的SpringBoot整合UEditor教程

    很详细的SpringBoot整合UEditor教程 2017年04月10日 20:27:21 小宝2333 阅读数:21529 版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...

  7. react全家桶从0搭建一个完整的react项目(react-router4、redux、redux-saga)

    react全家桶从0到1(最新) 本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目.文中针对react.webpack.babel.react-route.redux.redu ...

  8. React框架发展史

    原文地址: https://www.deaboway.com/react框架发展史.html#.YHr1L0j7QZE React开源地址:https://facebook.github.io/rea ...

  9. 项目中的富文本编辑器该如何选择?

    项目中经常需要用到富文本编辑器的时候,而常见的富文本编辑器都有哪些?该如何选择? 先看看市面上都有哪些可用的富文本编辑器: TinyMCE(插件式的,支持 Vue,React,Angular 框架) ...

最新文章

  1. 嵌入式linux的调试时间,嵌入式LINUX启动时间优化
  2. C++知识点21——使用C++标准库(再谈string——string的搜索和数值转化)
  3. Linux 用户名、主机添加背景色
  4. 不要以为学java,.net或VB的就很牛
  5. Android 各控件的使用 - 按钮(Button)
  6. c语言格式错误pe,C语言PE文件filebuffer到imagebuffer的错误
  7. 计算机里什么文件无法删除,电脑上的文件删不掉怎么办
  8. 作者:孟磊,山东省农业信息中心助理农经师。
  9. HDU 6090 Rikka with Graph 思维 公式
  10. php mysql 简单,你想不到的最简单php操作MySQL
  11. React-setState修改状态
  12. 完全重构一个项目的前端代码
  13. [Leetcode]设计链表
  14. 楪祈机器人_饥荒联机版罪恶王冠楪祈MOD下载_饥荒楪祈人物MOD下载_玩游戏网
  15. Java 弱密码校验判断处理
  16. 计算机机房大气压强的标准,标准大气压
  17. python爬虫之糗事百科
  18. code wars_从开发人员的角度看Browser Wars™(扩展)
  19. matlab输入错误怎么修改,matlab 一个错误 怎么修改
  20. 美团和大众点评早期分别以交易和用户评价进军团购行业

热门文章

  1. Unity3D引擎各大插件免费下载地址
  2. python画风景图_风景侠
  3. instagram封号的原因解析
  4. 系动词分类【大学英语笔记】
  5. 2021年研究生入学考试总结和复试冲刺复习计划
  6. 安装webpack出现“Refusing to install package with name webpack under a package”
  7. 微信公众平台上可以使用的API接口
  8. 连接MySQL实现增删改查的动态网页
  9. Docker 登录官方仓库
  10. 汉诺塔(3塔、4塔思路详记)