vue富文本框(插入文本、图片、视频)的使用及问题小结


Posted in Javascript onAugust 17, 2018

今天在vue里面插入富文本遇到了一些小坑在这里提供给大家用于参考,如有错误,望多加指正。

我这里使用的是Element-ui的上传图片组件

首先引入Element-ui(这个我就不作赘述了,详情参考element中文官网)

在引入富文本组件vue-quill-editor

使用在main.js引入相应的样式

import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
Vue.use(VueQuillEditor);

现在就可以在vue中使用富文本

<template>
<!--富文本编辑器-->
  <el-form-item label="内容" :label-width="formLabelWidth">
   <quill-editor v-model="value" ref="myQuillEditor" :options="editorOption" @change="onEditorChange($event)">
   </quill-editor>
  </el-form-item>
</template>
<script>
export default {
 data() {
  return {
        value:'',
  editorOption: {
   placeholder: '请输入院校简介',
   theme: 'snow',
   modules: {}
  }
      },
    methods: {
      onEditorChange() {
  console.log(this.value)
  }
    }
}
</script>

这里需要注意的是editorOption是必须要配置的

其样式由于没有在modules配置工具拦所以它的出事显示就较为简洁

如果需要上传图片或者视频就需要对模块里面对工具栏进行改造重构(使用handlers)

modules: {
   toolbar: {
    handlers: {
                container: toolbarOptions, // 工具栏
    'image': function(value) {
     if(value) {
     alert(1)
     } else {
     this.quill.format('image', false);
     }
    },
    'video': function(value) {
     if(value) {
     alert(2)
     } else {
     this.quill.format('image', false);
     }
    },
    }
   }
   }

配置好了过后会发现整个富文本编辑器的工具栏没有改变,还是只保留了几个基本的富文本功能。

vue富文本框(插入文本、图片、视频)的使用及问题小结

这个是因为handlers是用来定义自定义程序的,而添加自定义处理程序就会覆盖它本省的工具栏和主体行为所以我们还要再自行配置下自己需要的工具栏,所有功能的配置如下,大家也可以按需配置

const toolbarOptions = [
 ['bold', 'italic', 'underline', 'strike'], // toggled buttons
 ['blockquote', 'code-block'],
 [{
  'header': 1
 }, {
  'header': 2
 }], // custom button values
 [{
  'list': 'ordered'
 }, {
  'list': 'bullet'
 }],
 [{
  'script': 'sub'
 }, {
  'script': 'super'
 }], // superscript/subscript
 [{
  'indent': '-1'
 }, {
  'indent': '+1'
 }], // outdent/indent
 [{
  'direction': 'rtl'
 }], // text direction
 [{
  'size': ['small', false, 'large', 'huge']
 }], // custom dropdown
 [{
  'header': [1, 2, 3, 4, 5, 6, false]
 }],
 [{
  'color': []
 }, {
  'background': []
 }], // dropdown with defaults from theme
 [{
  'font': []
 }],
 [{
  'align': []
 }],
 ['link', 'image', 'video'],
 ['clean'] // remove formatting button
 ]

此时的文本工具就会丰富了

vue富文本框(插入文本、图片、视频)的使用及问题小结

这样它的工具栏就会有上传图片和视频的接口,然后你就可以在工具拦的配置里的image和video里配置上传图片或视频,可以根据它的点击来给他相应的处理回应,也可以为其重新定向事件,这里我这里给大家介绍重新定向事件

首先定义一个上传组件,我这里用的是自己写好的上传 组件

<div class='avatar-uploader'>
 <myUp v-on:getImgUrl='AddInputUrl'></myUp>
</div>

设置好相应属性值和事件

<script>
import myUp from '@/page/test' //上传组件
  export default {
    data() {
      return { 
        value:'',          
        editorOption: {
   placeholder: '请输入院校简介',
   theme: 'snow', // or 'bubble'
   modules: {
   toolbar: {
    container: toolbarOptions, // 工具栏
    handlers: {
    'image': function(value){
     if(value) {
//     console.log(this.serverUrl)
     document.querySelector('.avatar-uploader').click()
//                alert(1)
     } else {
     this.quill.format('image', false);
     }
    },
    'video': function(value) {
     if(value) {
     alert(2)
     } else {
     this.quill.format('image', false);
     }
    },
    }
   }
   }
  }, 
      }
    },
    methods: {
      onEditorChange() {
  console.log(this.value)
  var conten = this.value
  this.$emit('getText',conten)
  }
    }
  }
</script>

这里需要注意的是如果想直接实现上传的话就需要在工具栏设置点击图片上传的时候用指针函数将this锁定再做其他操作

由于我是自己写的上传所以要插入到富文本内部所以添加内容的时候需要加入img标签,因为富文本内部是支持图片的解析的

AddInputUrl(data) {
  var a = data
  var tp = a.length
  var imghz = a.slice(tp - 4, tp)
  var src = 'src="' + a + '"'
  var bq = "<img " + src + " alt='' />"
  this.value += bq
}

做到这里一个支持上传图片的富文本就做好了,再来说下视频,由于引入的富文本绝大多数都是没有内置的播放器所以video标签在富文本里面会失效,在这里我就选择直接用iframe标签

var bq='<iframe frameborder="0" width="100%" height="40%" '+ src+' allowfullscreen></iframe>'
this.value += bq

总结

以上所述是小编给大家介绍的vue富文本框(插入文本、图片、视频)的使用及问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript学习笔记7 原型链的原理
Jan 11 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
分享一个常用的javascript静态类
Dec 31 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
Feb 28 Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 Javascript
浅谈JavaScript 的执行顺序
Aug 07 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
Nov 06 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
three.js实现3D视野缩放效果
Nov 16 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
vue中npm包全局安装和局部安装过程
Sep 03 Javascript
用vue设计一个日历表
Dec 03 Vue.js
浅析vue给不同环境配置不同打包命令
Aug 17 #Javascript
React中使用async validator进行表单验证的实例代码
Aug 17 #Javascript
JavaScript实现构造json数组的方法分析
Aug 17 #Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 #Javascript
layer.open 按钮的点击事件关闭方法
Aug 17 #Javascript
layer弹出层全屏及关闭方法
Aug 17 #Javascript
vue+iview+less 实现换肤功能
Aug 17 #Javascript
You might like
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
Python KMeans聚类问题分析
2018/02/23 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
什么是Web Service?
2012/07/25 面试题
聘任书的写作格式及范文
2014/03/29 职场文书
股权转让意向书
2014/04/01 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
Python几种酷炫的进度条的方式
2022/04/11 Python