关键词:
image与video在Quill formats中属于Embeds,要在富文本中插入图片或者视频需要使用insertEmbed api。
insertEmbed
insertEmbed(index: Number, type: String, value: any, source: String = ‘api‘): Delta
插入图片需要位置,内容类型以及图片的url:
quill.insertEmbed(10, ‘image‘, ‘https://quilljs.com/images/cloud.png‘)
获取位置:
const range = quill.getSelection();
上传图片
首先toolbar中添加image,还需要一个隐藏input元素用来上传图片:
<template> <div> <div id="toolbar"> <span class="ql-formats"> <button class="ql-image"></button> <button class="ql-video"></button> </span> </div> <div id="editor"> <p>Hello World!</p> <p>Some initial <strong>bold</strong> text</p> <p><br></p> </div> <input id="uploadImg" type="file" style="display:none" accept="image/png, image/jpeg, image/gif" @change="uploadImage"> </div> </template>
为image添加handler,点击时上传图片:
this.quill.getModule("toolbar").addHandler("image", this.uploadImageHandler)
handler:
uploadImageHandler () const input = document.querySelector(‘#uploadImg‘) input.value = ‘‘ input.click() ,
为input元素添加onchange事件,获取上传图片,上传服务器,获取图片地址,将地址插入到编辑器中:
async uploadImage (event) const form = new FormData() form.append(‘upload_file‘, event.target.files[0]) const url = await $.ajax(...) #上传图片 获取地址 const addImageRange = this.quill.getSelection() const newRange = 0 + (addImageRange !== null ? addImageRange.index : 0) this.quill.insertEmbed(newRange, ‘image‘, url) this.quill.setSelection(1 + newRange)
全部代码:
<template> <div> <div id="toolbar"> <span class="ql-formats"> <button class="ql-image"></button> <button class="ql-video"></button> </span> </div> <div id="editor"> <p>Hello World!</p> <p>Some initial <strong>bold</strong> text</p> <p><br></p> </div> <input id="uploadImg" type="file" style="display:none" accept="image/png, image/jpeg, image/gif" @change="uploadImage"> </div> </template> <script> import Quill from ‘quill‘ export default name: "QuillEditor", mounted () this.initQuill() , beforeDestroy () this.quill = null delete this.quill , methods: initQuill () const quill = new Quill(‘#editor‘, theme: ‘snow‘, modules: toolbar: ‘#toolbar‘ ) this.quill = quill this.quill.getModule("toolbar").addHandler("image", this.uploadImageHandler) , uploadImageHandler () const input = document.querySelector(‘#uploadImg‘) input.value = ‘‘ input.click() , async uploadImage (event) const form = new FormData() form.append(‘upload_file‘, event.target.files[0]) const url = await $.ajax(...) const addImageRange = this.quill.getSelection() const newRange = 0 + (addImageRange !== null ? addImageRange.index : 0) this.quill.insertEmbed(newRange, ‘image‘, url) this.quill.setSelection(1 + newRange) </script>
上传视频做些少许修改就可以了:
<input id="uploadVideo" type="file" style="display:none" accept="video/*" @change="uploadVideo">
this.quill.getModule("toolbar").addHandler("video", this.uploadVideoHandler)
uploadVideoHandler () ...
async uploadVideo (event) ...
定制Video
默认的video上传会存在一个问题,上传后video是放在iframe中的,一般情况下是没有问题的,但在小程序中使用h5页面时,iframe中的域名需要添加到小程序业务域名中,否则会禁止访问。
更好的解决方法是简单的添加一个video元素,而不是iframe,我们需要定制一个Video Embed。
const BlockEmbed = Quill.import(‘blots/block/embed‘) class VideoBlot extends BlockEmbed static create (value) let node = super.create() node.setAttribute(‘src‘, value.url) node.setAttribute(‘controls‘, value.controls) node.setAttribute(‘width‘, value.width) node.setAttribute(‘height‘, value.height) node.setAttribute(‘webkit-playsinline‘, true) node.setAttribute(‘playsinline‘, true) node.setAttribute(‘x5-playsinline‘, true) return node; static value (node) return url: node.getAttribute(‘src‘), controls: node.getAttribute(‘controls‘), width: node.getAttribute(‘width‘), height: node.getAttribute(‘height‘) ;
注册:
VideoBlot.blotName = ‘simpleVideo‘ VideoBlot.tagName = ‘video‘ Quill.register(VideoBlot)
插入Embed:
this.quill.insertEmbed(newRange, ‘simpleVideo‘, url, controls: ‘controls‘, width: ‘100%‘, height: ‘100%‘ )
添加效果:
<video src="...mp4" controls="controls" width="100%" height="100%" webkit-playsinline="true" playsinline="true" x5-playsinline="true"></video>
富文本编辑器上传不了微信文件夹的图片,使用vue-quill-editor编辑器
vue项目中,npm安装npminstallvue-quill-editor--save在main.js注册importVueQuillEditorfrom'vue-quill-editor'import'quill/dist/quill.core.css'import'quill/dist/quill.snow.css'import& 查看详情
富文本编辑器-1-选型
...团队的业务多为后台管理系统,部分业务需要使用富文本编辑器。早期团队选用了百度编辑器,但存在bug多、无人维护、扩展性差等问题,且后续业需要更灵活的编辑器。为了解决这些问题,决定重选编辑器。基于以下原因,笔... 查看详情
轻量级富文本编辑器quilleditor结合iview的使用
...ue-quill-editor是我们在使用vue框架的时候常用的一个富文本编辑器,在进行富文本编辑的时候,我们往往要插入一些图片,vue-quill-editor默认的处理方式是直接将图片转成base64编码,这样的结果是整个富文本的html片段十分冗余,有... 查看详情
vue-quill-editor富文本编辑器使用步骤(代码片段)
首先放上效果图目录1.安装2.引入到项目中3.在页面上写组件4.配置option5.给工具栏鼠标悬停加上中文释义6.上传图片到七牛云7.自定义控制图片大小1.安装npminstallvue-quill-editor-S2.引入到项目中 有两种挂载方式:全局... 查看详情
vuequilleditor自定义图片/视频上传(elementui+oss)字体字体大小段落等(代码片段)
近期项目中需要使用富文本编辑器,开始想到的富文本编辑器是百度的UEditor,UEditor功能齐全、插件多,但是图片只能上传到本地服务器,如果需要上传到其他服务器需要改动源码,而且是PHP、JSP、ASP、.Ne... 查看详情
在vue项目使用quill-editor带样式编辑器(更改插入图片和视频)
vue-quill-editor默认插入图片是直接将图片转为base64再放入内容中,如果图片比较大的话,富文本的内容就会很大。插入视频是直接弹框输入URL地址,某些需求下我们需要让用户去本地选择自己的视频,我们可以通过vue-quill-editor内... 查看详情
vue+elementui+vue-quill-editor富文本图片上传到骑牛云
vue-quill-editor上传图片会转换成base64格式,但是这不是我们想要的,之后翻了很多文章才找到想要的,下面直接上代码<stylelang="sass">.quill-editormin-height:500pxbackground:#fff.ql-containermin-height:500px.ql-snow.ql-editorimgmax-width:480px. 查看详情
vue-quill-editor富文本编辑器基本的使用与步骤
参考技术A本文章参考文献如下:https://blog.csdn.net/qq_44782585/article/details/123571236https://blog.csdn.net/liuqiao0327/article/details/107126784欢迎大家点赞支持下 查看详情
simditor富文本编辑器多选图片上传视频连接插入(代码片段)
simditor 是一个基于浏览器的所见即所得的文本编辑器。Simditor富文本编辑器,支持多选图片上传,视频连接插入,HTML代码编辑以及常用富文本按钮,支持的浏览器:IE10、Firefox、Safari。点击这里下载zip文件。你也可以安装Simditorbow... 查看详情
富文本编辑器quill的集成(代码片段)
中文地址:https://www.kancloud.cn/liuwave/quill/1409366只要模块:<!--Quill主要库--><scriptsrc="//cdn.quilljs.com/1.3.4/quill.js"></script><scriptsrc="//cdn.qu 查看详情
轻量级quill富文本编辑器
因为公司产品需要在移动端编辑文本,所以发现了这个轻量级的好东西,网上也没找到比较好的案例,就自己总结了下,有兴趣的直接复制代码运行看看就知道啦! 下面是quill.js的CDN加速地址:<!--MainQuilllibrary--><scripts... 查看详情
vue的富文本编辑器(代码片段)
效果图一、先安装vue-quill-editornpminstallvue-quill-editor--save2.在main.js中引入//引入富文本编辑器importVueQuillEditorfrom'vue-quill-editor'//引入vue-quill-editor相关样式import'quill/dist/quill.core.css'import 查看详情
富文本编辑器的使用(代码片段)
...npminstallvue-quill-editor--save23然后在main.js里面引入4/富文本编辑器5importVueQuillEditorfrom‘vue-quill-editor‘6import‘quill/dist/quill.core.css‘7import‘quill/dist/quill.snow.css‘8import‘quill/dist/quill.bubble.css‘9import‘@/styles/index.scss‘//globalcss全局样式... 查看详情
vue基于vue-quill-editor富文本编辑器
1、Vue基于vue-quill-editor富文本编辑器使用心得:https://www.cnblogs.com/ZaraNet/p/10209226.html 2、使用vue-quill-editor,获得到输入内容的html,怎样才能在外部的div中有跟编辑器里:用v-html绑定一下就行了,加上class="ql-editor"的话,样式就... 查看详情
vue-quill-editor富文本编辑器使用(代码片段)
vue-quill-editorgithub地址:https://github.com/surmon-china/vue-quill-editor官方文档地址:https://www.npmjs.com/package/vue-quill-editor vue项目中,npm安装依赖npminstallvue-quill-editor--save两种引用方法,全局引用和局部引用全局引用,项 查看详情
vue使用富文本编辑器vue-quill-editor(代码片段)
问题描述:我们在开发过程中经常会遇到使用富文本编辑器进行操作,当前插件市场上关于富文本的编辑器挺多的,我们就不一一个介绍了,现在我们主要讲解一些vue-quill-editor富文本编辑器的使用操作和注意事项... 查看详情
vue2封装的quill富文本编辑器组件vue-quill-editor
1、安装 npminstallvue-quill-editor--save2、使用import{quillEditor}from‘vue-quill-editor‘ 3、组件中<quill-editorv-model="content"ref="myQuillEditor"class="editer":options="editorOption"@ready="onE 查看详情
vue-quill-editor,wangeeitor实现富文本编辑器(代码片段)
目录vue2---使用vue-quill-editor1、安装vue-quill-editor模块2、将vue-quill-editor引入到项目中 3、创建组件4、结果展示 vue3---使用WangEditor1、安装模块2、创建组件 3、结果展示vue2---使用vue-quill-editor1、安装vue-quill-editor模块npminstallvue-quill-ed... 查看详情