vue中使用tinymce及插件powerpaste的使用

 更新时间:2023年07月21日 15:41:44   作者:网名想好了  
这篇文章主要介绍了vue中使用tinymce,以及插件powerpaste的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、版本

"@tinymce/tinymce-vue": "^3.0.1"

"tinymce": "^5.0.2",

"vue": "^2.6.11",

powerpaste 必须单独另外下载 !!!

二、vue中的使用

1、vue中下载tinymce

npm itinymce@5.0.2 -S

2、在界面引入tinymce

语言包下载地址:https://www.tiny.cloud/get-tiny/language-packages/

1、tinymce的封装

<template>
    <div class="tinymce-editor" style="height: calc(100% - 56px);">
        <editor v-model="myValue" :init="init" :disabled="disabled" @onClick="onClick" id="mytextarea"></editor>
    </div>
</template>
<script>
import tinymce from 'tinymce/tinymce'
import Editor from '@tinymce/tinymce-vue'
import 'tinymce/themes/silver/theme'
import 'tinymce/plugins/lists' // 列表插件
import 'tinymce/plugins/code' // 源代码插件
import 'tinymce/plugins/pagebreak' // 分页符插件
import 'tinymce/plugins/charmap' // 特殊符号插件
import 'tinymce/plugins/emoticons' // 表情插件
import 'tinymce/plugins/save' // 保存插件
import 'tinymce/plugins/preview' // 预览插件
// import 'tinymce/plugins/print' // 打印
import 'tinymce/plugins/image' // 上传图片插件
import 'tinymce/plugins/media' // 视频插件
import 'tinymce/plugins/link' // 链接插件
import 'tinymce/plugins/anchor' // 锚点插件
import 'tinymce/plugins/codesample' // 代码插件
import 'tinymce/plugins/table' // 表格插件
import 'tinymce/plugins/searchreplace' // 查找、替换插件
import 'tinymce/plugins/hr' // 水平分割线插件
import 'tinymce/plugins/insertdatetime' // 时间日期插件
// import 'tinymce/plugins/paste' // 粘体插件
import 'tinymce/plugins/wordcount' // 字数统计插件
import 'tinymce/plugins/fullscreen' // 全屏插件
import 'tinymce/plugins/help' // 帮助插件
export default {
    components: {
        Editor,
    },
    props: {
        //传入一个value,使组件支持v-model绑定
        value: {
            type: String,
            default: '',
        },
        disabled: {
            type: Boolean,
            default: false,
        },
        plugins: {
            type: [String, Array],
            default:
                'lists code pagebreak charmap emoticons save preview print image media link powerpaste ' +
                'anchor codesample table wordcount fullscreen help searchreplace hr insertdatetime',
        },
        toolbar: {
            type: [String, Array],
            default:
                '| formatselect fontselect fontsizeselect ' +
                '| undo redo ' +
                '| code bold italic underline strikethrough ' +
                '| alignleft aligncenter alignright alignjustify ' +
                '| outdent indent numlist bullist insertdatetime ' +
                '| table forecolor backcolor removeformat ' +
                '| hr searchreplace pagebreak charmap ' +
                '| fullscreen ' +
                '| link anchor codesample ',
        },
    },
    data() {
        return {
            //初始化配置
            init: {
                language_url: '/tinymce/zh-Hans.js',
                language: 'zh-Hans',
                skin_url: '/skins/ui/oxide',
                content_css: '/skins/content/default/content.css',
                height: '100%',
                plugins: this.plugins,
                toolbar: this.toolbar,
                menubar: true,
                placeholder: '请输入内容',
                branding: false, // 隐藏右下角技术支持
                fontsize_formats:
                    '12px 14px 16px 18px 24px 36px 48px 56px 72px',
                paste_data_images: true, // 是否允许黏贴图片
                font_formats:
                    '微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif;仿宋体=FangSong,serif;黑体=SimHei,sans-serif;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;',
                resize: true,
                zIndex: 11101,
                theme: 'silver', //主题
                insertdatetime_formats: [
                    '%H点%M分',
                    '%Y年%m月%d日',
                    '%Y年%m月%d日 %H点%M分',
                    '%Y-%m-%d %H:%M',
                ], // 时间日期格式化
                contextmenu: false, // 禁用富文本的右键菜单,使用浏览器自带的右键菜单
                // 添加扩展插件
                external_plugins: {
                    powerpaste: '/powerpaste/plugin.min.js',
                },
                powerpaste_word_import: 'propmt', // 参数可以是propmt, merge, clear,效果自行切换对比
                powerpaste_html_import: 'propmt', // propmt, merge, clear
                powerpaste_allow_local_images: true,
            },
            myValue: this.value,
        }
    },
    mounted() {
        tinymce.init({})
    },
    methods: {
        //添加相关的事件,可用的事件参照文档=> https://github.com/tinymce/tinymce-vue => All available events
        //需要什么事件可以自己增加
        onClick(e) {
            this.$emit('onClick', e, tinymce)
        },
    },
    watch: {
        value(newValue) {
            this.myValue = newValue
        },
        myValue(newValue) {
            this.$emit('hangdleEditor', newValue)
        },
    },
}
</script>
<style scoped>
</style>

2、tinymce 组件的使用

<template>
    <div style="height: calc(100%)">
        <Tinymce id="textAreaContent" class="editor" :value="content" v-on:hangdleEditor="hangdleEditor" />
    </div>
</template>
<script>
import Tinymce from '@/public/Tinymce.vue'
export default {
    data() {
        return {
            content: '',
        }
    },
    mounted() {
    },
    methods: {
        hangdleEditor(val) {
            this.content = val
        },
    },
    components: {
        Tinymce,
    },
}
</script>
<style scoped lang="less">
.cont {
    height: calc(100% - 60px);
    overflow: auto;
    .back {
        width: 96px;
        height: 32px;
        line-height: 32px;
        background: #ffffff;
        border-radius: 16px;
        font-size: 18px;
        font-weight: 500;
        color: #333333;
        text-align: center;
        cursor: pointer;
        margin-bottom: 24px;
    }
}
</style>

3、powerpaste 插件放入根目录public下     

链接:https://dxz.jb51.net/202307/yuanma/tinymce_powerpaste-master_jb51.rar

可以去这个地址下载 powerpaste 插件

4、处理粘贴内容时显示的文本为英文      

修改js文件中与显示弹窗的相同英文内容,替换为中文即可

5、效果预览

到此这篇关于vue中使用tinymce,以及插件 powerpaste 的使用的文章就介绍到这了,更多相关vue使用tinymce内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue实现购物车的监听

    vue实现购物车的监听

    这篇文章主要为大家详细介绍了利用vue的监听事件实现一个简单购物车,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • vue项目如何读取本地json文件数据实例

    vue项目如何读取本地json文件数据实例

    很多时候我们需要从本地读取JSON文件里面的内容,这篇文章主要给大家介绍了关于vue项目如何读取本地json文件数据的相关资料,需要的朋友可以参考下
    2023-06-06
  • vue2使用wangeditor实现手写输入功能

    vue2使用wangeditor实现手写输入功能

    这篇文章主要为大家详细介绍了vue2如何使用wangeditor实现手写输入功能,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解下
    2023-12-12
  • Vuex实现数据增加和删除功能

    Vuex实现数据增加和删除功能

    今天小编就为大家分享一篇Vuex实现数据增加和删除功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue中进行打包与部署的方法实例

    Vue中进行打包与部署的方法实例

    这篇文章主要给大家介绍了关于Vue中进行打包与部署的相关资料, 我们常使用前后端分离项目时,会需要将前端vue打包然后部署,需要的朋友可以参考下
    2023-09-09
  • iview 权限管理的实现

    iview 权限管理的实现

    本文主要介绍了iview 权限管理,iview-admin2.0自带权限管理。可以通过设置路由的meta对象的参数access来分配权限。感兴趣的可以了解一下
    2021-07-07
  • 教你轻松解决Vue Dialog弹窗诟病

    教你轻松解决Vue Dialog弹窗诟病

    弹窗经常被使用在一些表单的增删改查啊,或者弹出一些提示信息等等,这篇文章主要给大家介绍了关于Vue Dialog弹窗诟病解决的相关资料,需要的朋友可以参考下
    2023-01-01
  • Vue实现一个动态添加行的表格步骤详解

    Vue实现一个动态添加行的表格步骤详解

    在Vue组件中定义表格的数据模型,通常使用一个数组来存储表格的数据,每一行数据可以是一个对象,对象的属性对应表格的列,这篇文章主要介绍了Vue实现一个动态添加行的表格步骤详解,需要的朋友可以参考下
    2024-05-05
  • vue中数组常用的6种循环方法代码示例

    vue中数组常用的6种循环方法代码示例

    在vue项目开发中,我们需要对数组进行处理等问题,这里简单记录遍历数组的几种方法,这篇文章主要给大家介绍了关于vue中数组常用的6种循环方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • vue.js声明式渲染和条件与循环基础知识

    vue.js声明式渲染和条件与循环基础知识

    这篇文章主要为大家详细介绍了vue.js声明式渲染和条件与循环的基础知识,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论