wangEditor富文本编辑器的调用开发实录2(V5版本自定义粘贴,去除复制word或网页html冗余样式代码的解决方案)

简介: wangEditor富文本编辑器的调用开发实录2(V5版本自定义粘贴,去除复制word或网页html冗余样式代码的解决方案)

在使用wangEditor富文本编辑器时,当从word文档或者其他网页复制文本内容粘贴到编辑器中,如果不过滤掉复制文本中自带的样式,会导致复制的内容比较错乱,甚至无法添加到数据库中。为了解决这个问题,我们需要对从word中粘贴的内容进行处理,把多余的代码剔除,让粘贴后的文本变得更加简洁和轻量。


1.环境说明

  • wangEditor,V5版本;
  • 编辑器配置参数:customPaste,即自定义粘贴,可阻止编辑器的默认粘贴,实现自己的粘贴逻辑。
  • 使用说明,传送门
editorConfig.customPaste = (editor, event) => {
    // const html = event.clipboardData.getData('text/html') // 获取粘贴的 html
   const text = event.clipboardData.getData('text/plain') // 获取粘贴的纯文本
    // const rtf = event.clipboardData.getData('text/rtf') // 获取 rtf 数据(如从 word wsp 复制粘贴)
    // 同步
    editor.insertText('xxx')
    // 异步
    setTimeout(() => {
        editor.insertText('yy')
    }, 1000)
    // 阻止默认的粘贴行为
    event.preventDefault()
    return false
    // 继续执行默认的粘贴行为
    // return true
}


2.解决方案

    //默认粘帖
    editorConfig.customPaste = (editor, event) => {
        const text = event.clipboardData.getData('text/plain') // 获取粘贴的纯文本
        // 同步
        editor.insertText(text);
        // 阻止默认的粘贴行为
        event.preventDefault();
        return false
    }

3.完整代码

//wangEditor配置项
    const {
        createEditor, createToolbar
    } = window.wangEditor
    const editorConfig = {
        MENU_CONF: {},
        placeholder: 'Type here...',
        onChange(editor) {
            const html = editor.getHtml()
            //console.log(html);
        }
    }
    //默认粘帖
    editorConfig.customPaste = (editor, event) => {
        const text = event.clipboardData.getData('text/plain') // 获取粘贴的纯文本
        // 同步
        editor.insertText(text);
        // 阻止默认的粘贴行为
        event.preventDefault();
        return false
    }
    //上传图片
    editorConfig.MENU_CONF['uploadImage'] = {
        fieldName: 'file',//后台获取文件方式;
        server: '?m=Upload&a=uploadDeal&act=wangEditor&fromType=module&token=' + token,
        maxFileSize: 1 * 1024 * 1024, // 1M
        allowedFileTypes: ['image/*'],
        onFailed(file, res) {
            layer.msg(res.message);
        },
        onError(file, err, res) {
            layer.msg(file.name + err);
        }
    }
    const editor = createEditor({
        selector: '#editor-container',
        html: '',
        config: editorConfig,
        mode: 'default', // or 'simple'
    })
    //工具栏配置项
    const toolbarConfig = {}
    toolbarConfig.excludeKeys = ['uploadVideo', 'todo']
    const toolbar = createToolbar({
        editor,
        selector: '#toolbar-container',
        config: toolbarConfig,
        mode: 'default', // or 'simple'
    })


总结

wangEditor富文本编辑器去除复制的Word样式可以实现:


  1. 一致性:复制的Word样式可能与编辑器当前的样式不匹配,这会导致文本的外观不一致。为了保持编辑器中文本的一致性,去除复制的Word样式是必要的。
  2. 兼容性:Word中的样式可能包含复杂的格式和特殊的标记,这些标记可能在编辑器中不被支持。为了确保复制的文本在编辑器中正常显示,去除复制的Word样式是必要的。
  3. 清理冗余代码:Word样式在HTML中通常会生成大量的冗余代码,这可能导致页面加载缓慢和不必要的网络流量。通过去除复制的Word样式,可以帮助减少冗余代码,提高页面加载速度。

综上所述,去除复制的Word样式可以提高文本的一致性、兼容性,并优化页面加载效果。


@漏刻有时


相关文章
|
人工智能 IDE API
白板秒变IDE,草图直接生成可运行代码!Pad.ws:白板+代码编辑器深度结合,创意到实现无缝衔接
Pad.ws是一款创新的在线开发环境,将交互式白板与完整IDE工具深度结合,支持多人实时协作和多种编程语言,无需安装即可通过浏览器访问。
1222 1
白板秒变IDE,草图直接生成可运行代码!Pad.ws:白板+代码编辑器深度结合,创意到实现无缝衔接
梦幻西游脚本,脚本编辑器,明日方舟脚本【开源代码】
梦幻西游模块包含师门任务和宝图任务自动化,采用图像识别定位关键界面元素 明日方舟
|
移动开发 数据可视化 前端开发
tmagic - editor:大厂开源项目,零代码/低代码页面可视化编辑的利器,多端统一方案揭秘!如何用一套代码支持H5/PC,牛牛牛~~~
腾讯推出的开源项目 **tmagic-editor** 是一款所见即所得的页面可视化编辑器,支持H5、PC、TV等多种页面类型。它已应用于腾讯视频会员、腾讯会议等业务,每月生产和发布数百个页面,极大提高了开发效率。通过简单的拖拽和配置,非技术人员也能轻松创建复杂页面。tmagic-editor 支持 Vue2/Vue3 和 React 等多种前端框架,并提供了丰富的扩展功能,满足不同业务需求。
2140 3
|
前端开发
业余时间开发了个海报编辑器
为了满足撰写博客或录制教程视频时对高质量海报的需求,我利用业余时间开发了一款海报编辑器。第一版功能简单,支持固定尺寸、黑底白字的标题。后来经过优化,增加了背景图、模糊效果、文字样式调整等功能,使海报更具吸引力。目前该编辑器已上线,欢迎大家试用并反馈。[访问海报编辑器](https://tool.share888.top/#/poster)
455 6
业余时间开发了个海报编辑器
|
前端开发
HTML 样式- CSS3
内部样式表适用于单个文件的特别样式,通过<head>部分的<style>标签定义;外部样式表适用于多个页面,通过<link>标签引用外部CSS文件;<style>定义样式,<link>引用资源;已弃用的标签有<font>、<center>、<strike>,属性有color和bgcolor。
HTML 样式- CSS2
HTML样式实例展示了如何使用`font-family`、`color`和`font-size`属性来定义字体样式,以及使用`text-align`属性来设置文本的对齐方式。示例包括标题和段落的样式设置。
|
前端开发
HTML 样式- CSS1
CSS (层叠样式表) 用于为 HTML 元素添加样式,包括颜色、文本、盒子模型等。CSS 可以通过内联样式、内部样式表或外部引用的方式添加到 HTML 中。推荐使用外部引用方式。本教程将介绍如何使用 CSS 为 HTML 添加样式,并提供实例演示。
|
前端开发 开发者
大模型代码能力体验报告之贪吃蛇小游戏《二》:OpenAI-Canvas-4o篇 - 功能简洁的文本编辑器加一点提示词语法糖功能
ChatGPT 的Canvas是一款简洁的代码辅助工具,提供快速复制、版本管理、选取提问、实时编辑、代码审查、代码转写、修复错误、添加日志和注释等功能。相较于 Claude,Canvas 更加简单易用,但缺少预览功能,适合一般开发者使用。
488 0
|
开发工具
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
|
开发工具
Vim 编辑器:高效文本编辑的瑞士军刀
**Vim 概览:** Vim 是一个功能丰富的文本编辑器,以其高度可定制性著称。文章介绍了 Vim 的高效使用技巧,包括快捷打开文件、命令行模式下的常用命令、查找与替换、删除和复制文本。还讨论了配置 `.vimrc` 文件以自定义设置,如改变 leader 键、设置缩进和高亮,并展示了安装插件如 vim-airline 和 vim-snazzy 的方法。通过这些技巧,用户能提升 Vim 使用效率。
576 5