vue/cli 4.5.8使用tinymce富文本编辑器无样式黏贴word表格

本文主要是介绍vue/cli 4.5.8使用tinymce富文本编辑器无样式黏贴word表格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

vue/cli 4.5.8使用tinymce富文本编辑器无样式黏贴word表格

  • tinymce版本
  • 第二步
  • 第三步 组件封装
  • 第三步 组件的引用
  • 第三步 效果

tinymce版本

在这里插入图片描述
附上链接
tinymce4.5.12

附上命令:
npm install tinymce -S
npm install @tinymce/tinymce-vue -S
由于没有指定版本所以命令执行完可以修改package.json文件指定依赖版本,然后删掉node_module文件夹,重新执行npm install重新安装

第二步

在public目录下新建文件夹static/tinymce,目录建好后,找到node_modules文件夹下的tinymce/skins目录,将skins目录复制到我们创建的static/tinymce文件夹内,如下图所示:
在这里插入图片描述
在这里插入图片描述
附上语言包地址
zh_CN.js

第三步 组件封装

my-tinymce.vue

<template><div style="margin: 20px auto; padding-top:20px;width: 80%;"><textarea :id="Id" :value="value"></textarea><el-button @click="getContent">获取内容</el-button></div>
</template>
<script>
require('../../static/tinymce/langs/zh_CN.js') // 根据自己的组件路径修改
export default {data () {const Id = Date.now()return {Id: Id,Editor: null,DefaultConfig: {// GLOBALheight: 900,theme: 'modern',menubar: false,toolbar: `styleselect | fontselect | formatselect | fontsizeselect | forecolor backcolor | bold italic underline strikethrough | image  media | table | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | preview removeformat  hr | paste code  link | undo redo | fullscreen `,plugins: `pasteimportcssimagecodetableadvlistfullscreenlinkmedialiststextcolorcolorpickerhrpreview`,// CONFIGforced_root_block: 'p',force_p_newlines: true,importcss_append: true,// CONFIG: ContentStyle 这块很重要, 在最后呈现的页面也要写入这个基本样式保证前后一致, `table`和`img`的问题基本就靠这个来填坑了content_style: `*                         { padding:0; margin:0; }html, body                { height:100%; }img                       { max-width:100%; display:block;height:auto; }a                         { text-decoration: none; }iframe                    { width: 100%; }p                         { line-height:1.6; margin: 0px; }table                     { word-wrap:break-word; word-break:break-all; max-width:100%; border:none; border-color:#999; }.mce-object-iframe        { width:100%; box-sizing:border-box; margin:0; padding:0; }ul,ol                     { list-style-position:inside; }`,images_upload_url: 'https://sm.ms/api/upload',images_upload_base_path: '',insert_button_items: 'image link | inserttable',// CONFIG: Pastepaste_retain_style_properties: 'none',paste_word_valid_elements: "table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody,h1,h2,h3,h4,h5,img,p",        // word需要它paste_data_images: true,                  // 粘贴的同时能把内容里的图片自动上传,非常强力的功能paste_convert_word_fake_lists: false,     // 插入word文档需要该属性paste_webkit_styles: 'all',paste_merge_formats: true,nonbreaking_force_tab: false,//paste_auto_cleanup_on_paste: false,paste_auto_cleanup_on_paste : true,paste_remove_styles: true,paste_remove_styles_if_webkit: true,paste_strip_class_attributes: true,// CONFIG: Fontfontsize_formats: '10px 11px 12px 14px 16px 18px 20px 24px',// CONFIG: StyleSelectstyle_formats: [{title: '首行缩进',block: 'p',styles: { 'text-indent': '2em' }},{title: '行高',items: [{title: '1', styles: { 'line-height': '1' }, inline: 'span'},{title: '1.5', styles: { 'line-height': '1.5' }, inline: 'span'},{title: '2', styles: { 'line-height': '2' }, inline: 'span'},{title: '2.5', styles: { 'line-height': '2.5' }, inline: 'span'},{title: '3', styles: { 'line-height': '3' }, inline: 'span'}]}],// FontSelectfont_formats: `微软雅黑=微软雅黑;宋体=宋体;黑体=黑体;仿宋=仿宋;楷体=楷体;隶书=隶书;幼圆=幼圆;Andale Mono=andale mono,times;Arial=arial, helvetica,sans-serif;Arial Black=arial black, avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats`,// Tabtabfocus_elements: ':prev,:next',object_resizing: true,// Imageimagetools_toolbar: 'rotateleft rotateright | flipv fliph | editimage imageoptions'}}},props: {value: {default: '',type: String},config: {type: Object,default: () => {return {theme: 'modern',height: 100}}},url: {default: '',type: String},accept: {default: 'image/jpeg, image/png',type: String},maxSize: {default: 2097152,type: Number},withCredentials: {default: false,type: Boolean}},headers: {'Content-type': 'application/json;charset=UTF-8'},mounted () {this.init()},beforeDestroy () {// 销毁tinymcethis.$emit('on-destroy')window.tinymce.remove(document.getElementById(`{this.Id}`))},methods: {// 上传主图myFunction (){var x=document.getElementById("mainfile")var f= document.getElementById("mainfile").files[0]var formData=new FormData()var xmlhttpvar self = thisif (window.XMLHttpRequest){//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码xmlhttp=new XMLHttpRequest()}else{// IE6, IE5 浏览器执行代码xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200){self.sproduct.pictures=JSON.parse(xmlhttp.responseText).data.url}}formData.append('smfile',f)xmlhttp.open('POST', 'https://sm.ms/api/upload',false)xmlhttp.send(formData)},init () {const self = thisthis.Editor = window.tinymce.init({// 默认配置...this.DefaultConfig,// 图片上传images_upload_handler: function (blobInfo, success, failure) {if (blobInfo.blob().size > self.maxSize) {failure('文件体积过大')}if (self.accept.indexOf(blobInfo.blob().type) >= 0) {uploadPic()} else {failure('图片格式错误')}function uploadPic () {const xhr = new XMLHttpRequest()const formData = new FormData()formData.append('smfile', blobInfo.blob())xhr.open('POST', 'https://sm.ms/api/upload')xhr.onload = function () {if (xhr.status !== 200) {// 抛出 'on-upload-fail' 钩子self.$emit('on-upload-fail')failure('上传失败: ' + xhr.status)return}const json = JSON.parse(xhr.responseText)// 抛出 'on-upload-complete' 钩子console.log(json.data.url)self.$emit('on-upload-complete' , [json.data, success, failure])success(json.data.url)}formData.append('smfile', blobInfo.blob())xhr.send(formData)}},// prop内传入的的config...this.config,// 挂载的DOM对象selector: `#${this.Id}`,setup: (editor) => {// 抛出 'on-ready' 事件钩子editor.on('init', () => {self.loading = falseself.$emit('on-ready')editor.setContent(self.value)})// 抛出 'input' 事件钩子,同步value数据editor.on('input change undo redo', () => {self.$emit('input', editor.getContent())})}})},getContent () {console.log(tinymce.editors[0].getContent())}}
}
</script>

在这里插入图片描述
这是init方法中对富文本编辑器的黏贴插件配置
更多可以查看:插件配置

第三步 组件的引用

在这里插入图片描述

在这里插入图片描述

第三步 效果

在这里插入图片描述

这篇关于vue/cli 4.5.8使用tinymce富文本编辑器无样式黏贴word表格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/325505

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers