实现插入公式的富文本框(tinymce+kityformula-editor)

官网:http://tinymce.ax-z.cn/

安装tinymce

https://www.jianshu.com/p/aa01ba44ce99

vue安装tinymce参考链接

在vue2.0+,vuecli3.0+中使用tinymce及实现多图上传,文件上传,公式编辑等功能 - huihuihero - 博客园

tinymce安装后遇见的问题

1、报错failed to fetch dynamically imported module

最后没有按照安装官网步骤在main文件注册,而是直接在使用的地方引用就不会报错

2、报错failed to resolve import 'tinymce/plugins/fullpage' from 'src\components\TEditor.vue'

发现如下插件都会报错

简单粗暴的将这些都注释了

3、报错/models/dom/model.js nre::ERR_ABORTED 404 (NOT FOUND) tinymce.js:4947

解决办法:

在TEditor.vue文件添加如下代码:

import 'tinymce/models/dom/model.js'

4、报错failed to load plugin:template from url plugins/template/plugin.js

因为上面已经注释了相关import文件引入,但是下面plugins没有删除掉

解决办法:将文件中这两个里面,相关注释掉的都删除

5、报错/skins/content/default/content.css 404

修改TEditor.vue如下代码:

引入kityformula-editor实现公式

安装步骤,参考链接:kityformula-editor 数学公式 | TinyMCE中文文档中文手册

下载好压缩包

在node_modules目录中将timymce下plugins文件夹复制粘贴到public->tinymce下

将解压后的 kityformula-editor 包放到里面

TEditor.vue文件调整代码

引入kityformula-editor后出现的问题

1、没有显示公式两字

在index.html中加入如下代码

2、点击公式,打开弹窗报错/plugins/kityformula-editor/kityformula.html 404

修改kityformula-editor文件下的plugin.js和plugin.min.js文件的这行代码

插入的公式会被识别成图片

在kityformula-editor的包里面有个plugin.js、plugin.min.js,他的代码第10行对base64图片双击时进行了字符串格式判断,他判断的是整个字符串是一个img标签,然而我们最终得到的是p标签包裹的img以及其他的元素,所以我们直接把这个if判断去掉就可以了。

复制进去的latex公式无法在编辑框中正确回显为公式

我们

公式创建完成以后保存下来的字符串,回显时无法正确回显(研究发现是data-latex中的\被误认为是转义字符了)

我们在拿到最终生成的字符串值以后,需要对这个字符串处理一下,将字符串中的\都替换为\\以后再上传给服务器。以下两种方案都可以的:

假设最终拿到的公式字符串存为content,

content.split('\\').join('\\\\')

content.replace(/\\/g,'\\\\')

图片不上传,直接使用base64会提示图片上传失败

将init中加入automatic_uploads: false,禁止图片自动上传我们只使用base64记录图片,我们也尝试过万一其他图片需要上传怎么办,后来发现这个base64图片的配置确实会影响到其他正常上传的图片。也就是说要么都用base64,要么都上传到服务器,不过我们肯定是不希望数学公式上传到服务器的,因为我并不需要记录他。

相关推荐
粉末的沉淀2 分钟前
vue:Vite项目中高效管理纯色SVG图标的方案
前端·javascript·vue.js
卤蛋fg63 分钟前
vxe-table 列宽与行高拖拽调整:让表格布局极其灵活,拖拽功能非常强大
vue.js
向日的葵00635 分钟前
Vue 路由传参的三种方式(三)
vue.js·路由
如果超人不会飞1 小时前
TinyVue Checkbox复选框组件使用指南
前端·vue.js
如果超人不会飞1 小时前
TinyVue Radio单选框组件使用指南
vue.js
鲁班小子1 小时前
Vite resolve.dedupe 使用教程
vue.js·vite
如果超人不会飞1 小时前
TinyVue Input输入框组件使用指南
vue.js
如果超人不会飞1 小时前
TinyVue Pager分页组件使用指南
前端·vue.js
大刚测试开发实战2 小时前
TestHub重磅更新!AI用例生成增加流式输出、Markdown文档上传、模型配置检测、AI评审开关控制...
vue.js·后端·github
可别3902 小时前
Vue 极简实现语音实时转写(录音转文字,低网络依赖、开箱即用)
前端·javascript·vue.js