Vue CKEditor5 剪切板事件监听,贴贴事件拦截

一、简介

二、方式一:通过 元素标签 使用

  • 案例代码

    <template>
      <!-- ckeditor 父元素 -->
      <div class="editor-view">
        <!-- 编辑器 -->
        <div id="editor"></div>
      </div>
    </template>
    
    <script>
    // 经典编辑器($ npm install --save @ckeditor/ckeditor5-build-classic)
    import Editor from '@ckeditor/ckeditor5-build-classic'
    
    // 中文包(语言包都在 build 版本中,注意 ckeditor5-build-xxx,xxx 需要替换为安装的编辑器包路径)
    import '@ckeditor/ckeditor5-build-classic/build/translations/zh-cn'
    
    // 安装剪切板($ npm install @ckeditor/ckeditor5-clipboard)
    import plainTextToHtml from '@ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml'
    
    export default {
      data () {
        return {
          // 编辑器对象
          editor: undefined,
          // 编辑内容
          editorData: '<p>Content of the editor</p>',
          // 编辑器配置
          editorConfig: {
            // 配置语言
            language: 'zh-cn'
            // 功能栏
            // toolbar: {
            //   items: ['Bold', 'Italic', 'Link' ...]
            // }
            // 更多的配置....
          }
        }
      },
      mounted () {
        // 初始化编辑器
        Editor.create(document.querySelector('#editor'), this.editorConfig).then(editor => {
          console.log('创建成功')
          // 记录编辑器对象
          this.editor = editor
          // 监听内容变化
          // editor.model.document.on('change:data', (e) => {
          //   // 输出当前内容
          //   console.log(editor.getData(), e)
          // })
          // 剪切板内容拦截处理
          editor.plugins.get('ClipboardPipeline').on('inputTransformation', (evt, data) => {
            const dataTransfer = data.dataTransfer
            let content = plainTextToHtml(dataTransfer.getData('text/plain'))
            data.content = this.editor.data.htmlProcessor.toView(content)
          })
          // 初始化内容
          editor.setData(this.editorData)
        }).catch(error => {
          console.log('创建失败', error)
        })
      }
    }
    </script>
    

三、方式一:通过 @ckeditor/ckeditor5-vue2 组件使用

  • main.js

    // 导入编辑器组件($ npm install @ckeditor/ckeditor5-vue2)
    import CKEditor from '@ckeditor/ckeditor5-vue2'
    Vue.use( CKEditor )
    
  • 案例代码

    <template>
      <!-- ckeditor 父元素 -->
      <div class="editor-view">
        <!-- 编辑器 -->
        <ckeditor :editor="editor" v-model="editorData" :config="editorConfig" @ready="onReady"></ckeditor>
      </div>
    </template>
    
    <script>
    // 经典编辑器($ npm install --save @ckeditor/ckeditor5-build-classic)
    import Editor from '@ckeditor/ckeditor5-build-classic'
    
    // 中文包(语言包都在 build 版本中,注意 ckeditor5-build-xxx,xxx 需要替换为安装的编辑器包路径)
    import '@ckeditor/ckeditor5-build-classic/build/translations/zh-cn'
    
    // 安装剪切板($ npm install @ckeditor/ckeditor5-clipboard)
    import plainTextToHtml from '@ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml'
    export default {
      data () {
        return {
          // 编辑器对象
          editor: Editor,
          // 编辑内容
          editorData: '<p>Content of the editor</p>',
          // 编辑器配置
          editorConfig: {
            // 配置语言
            language: 'zh-cn'
            // 功能栏
            // toolbar: {
            //   items: ['Bold', 'Italic', 'Link' ...]
            // }
            // 更多的配置....
          }
        }
      },
      methods: {
        onReady (editor) {
          editor.plugins.get('ClipboardPipeline').on('inputTransformation', (evt, data) => {
            const dataTransfer = data.dataTransfer
            let content = plainTextToHtml(dataTransfer.getData('text/plain'))
            data.content = editor.data.htmlProcessor.toView(content)
          })
        }
      }
    }
    </script>
    

四、细节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值