element ui富文本编辑器的使用(quill-editor)

element ui富文本编辑器的使用(quill-editor)

文章目录

  • element ui富文本编辑器的使用(quill-editor)
    • 效果展示:(可以上传图片及其视频)
    • 第一步、首先安装富文本编辑器插件
    • 第二步、然后在main.js文件中,全局注册
    • 第三步、在vue界面中使用quill-editor
    • 第四步:配置video.js(要有上传视频且回显的功能需要配置)
      • 1、创建video.js的空文件
      • 2、更改vue界面(引入video.js文件)
    • 功能展示

效果展示:(可以上传图片及其视频)

可以拖拽图片大小及其位置

element ui富文本编辑器的使用(quill-editor)_第1张图片

第一步、首先安装富文本编辑器插件

cnpm install vue-quill-editor --save
cnpm install quill-image-drop-module --save     
cnpm install quill-image-resize-module --save

第二步、然后在main.js文件中,全局注册

 //引入quill-editor编辑器
 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)
 
 //实现quill-editor编辑器拖拽上传图片
 import * as Quill from 'quill'
 import { ImageDrop } from 'quill-image-drop-module'
 Quill.register('modules/imageDrop', ImageDrop)
 
 //实现quill-editor编辑器调整图片尺寸
 import ImageResize from 'quill-image-resize-module'
 Quill.register('modules/imageResize', ImageResize)

element ui富文本编辑器的使用(quill-editor)_第2张图片

第三步、在vue界面中使用quill-editor

为了便于大家直接使用,直接把script以及css放在一个页面里,之际copy就可以使用







注意:

1、我是在elementUi使用的,上传图片以及页面的访问需要有登录权限,所以我的上传图片视频的组件里有:headers=“headers”,携带登录权限
2、需要更改自己的上传文件的路径(改成自己的)
element ui富文本编辑器的使用(quill-editor)_第3张图片
3、import {getToken} from “@/utils/auth”;
获取登录token,引入文件,如果只是简单测试,没有上传文件是否登录的限制的话,这个token可以不用获取,文件可以不引入,把上面对应的上传文件携带请求头 :headers=“headers” 这个代码删掉即可。根据自己的情况来就行。
element ui富文本编辑器的使用(quill-editor)_第4张图片
所引入的文件:(获取登录token)
如果上传文件有登录全选验证,可以按照自己框架的token来写,如果没有则删掉即可。
element ui富文本编辑器的使用(quill-editor)_第5张图片

展示

此时就quill-editor富文本编辑器就能使用了,除了基本功能之外也能够上传图片

element ui富文本编辑器的使用(quill-editor)_第6张图片

element ui富文本编辑器的使用(quill-editor)_第7张图片

第四步:配置video.js(要有上传视频且回显的功能需要配置)

因为quill-editor富文本编辑器当我们上传mp4等视频类型的文件时,quill-editor会自动的用iframe标签来创建,此时视频文件将不能显示出来,我们需要改写quill-editor提供能video.js文件,更改为video的标签来展示视频

------>此时视频链接已经生成,但是因为iframe标签将不能展示

element ui富文本编辑器的使用(quill-editor)_第8张图片

当我们手动的把页面iframe标签改为video标签时视频就显示出来了,找到问题,开搞

element ui富文本编辑器的使用(quill-editor)_第9张图片

1、创建video.js的空文件

为了方便讲解,我这里放在了页面同一目录下

element ui富文本编辑器的使用(quill-editor)_第10张图片

video.js内容

import  { Quill }  from 'vue-quill-editor'

// 源码中是import直接倒入,这里要用Quill.import引入
const BlockEmbed = Quill.import('blots/block/embed')
// const Link = Quill.import('formats/link')

const ATTRIBUTES = ['height', 'width']

class Video extends BlockEmbed {
    static create (value) {
        const node = super.create(value)
        // console.log("js文件"+ window.jsValue)
        // 添加video标签所需的属性
        node.setAttribute('controls', 'controls') // 控制播放器
        //删除原生video的控制条的下载或者全屏按钮的方法
        //
        //不用哪个在下面加上哪个
        node.setAttribute('controlsList', 'nofullscreen') // 控制删除
        node.setAttribute('type', 'video/mp4')
        node.setAttribute('style', 'object-fit:fill;width: 100%;')
        node.setAttribute('preload', 'auto')    // auto - 当页面加载后载入整个视频  meta - 当页面加载后只载入元数据  none - 当页面加载后不载入视频
        node.setAttribute('playsinline', 'true')
        node.setAttribute('x-webkit-airplay', 'allow')
        // node.setAttribute('x5-video-player-type', 'h5') // 启用H5播放器,是wechat安卓版特性
        node.setAttribute('x5-video-orientation', 'portraint') // 竖屏播放 声明了h5才能使用  播放器支付的方向,landscape横屏,portraint竖屏,默认值为竖屏
        node.setAttribute('x5-playsinline', 'true') // 兼容安卓 不全屏播放
        node.setAttribute('x5-video-player-fullscreen', 'true')    // 全屏设置,设置为 true 是防止横屏
        node.setAttribute('src', window.jsValue)
        return node
    }

    static formats (domNode) {
        return ATTRIBUTES.reduce((formats, attribute) => {
            if (domNode.hasAttribute(attribute)) {
                formats[attribute] = domNode.getAttribute(attribute)
            }
            return formats
        }, {})
    }

    // static sanitize (url) {
    //
    //      // eslint-disable-line import/no-named-as-default-member
    // }

    static value (domNode) {
        return domNode.getAttribute('src')
    }

    format (name, value) {
        if (ATTRIBUTES.indexOf(name) > -1) {
            if (value) {
                this.domNode.setAttribute(name, value)
            } else {
                this.domNode.removeAttribute(name)
            }
        } else {
            super.format(name, value)
        }
    }

    html () {
        const { video } = this.value()
        return `${video}">${video}`
    }
}
Video.blotName = 'video' // 这里不用改,楼主不用iframe,直接替换掉原来,如果需要也可以保留原来的,这里用个新的blot
Video.className = 'ql-video'
Video.tagName = 'video' // 用video标签替换iframe

export default Video

2、更改vue界面(引入video.js文件)

(1) 引入video.js

import * as Quill from 'quill'
// 这里引入修改过的video模块并注册
import Video from './video'
Quill.register(Video, true)

element ui富文本编辑器的使用(quill-editor)_第11张图片

(2) 引入全局变量(供video.js调用)

window.jsValue=imgUrl;

element ui富文本编辑器的使用(quill-editor)_第12张图片

更好好后的vue文件:







功能展示

element ui富文本编辑器的使用(quill-editor)_第13张图片

你可能感兴趣的:(ui,vue.js,javascript)