富文本编辑器CKEditor4简单使用-07(处理浏览器不支持通过工具栏粘贴问题 和 首行缩进的问题)

news2024/11/24 17:59:08

富文本编辑器CKEditor4简单使用-07(处理浏览器不支持通过工具栏粘贴问题 和 首行缩进的问题)

  • 1. 前言——CKEditor4快速入门
  • 2. 默认情况下的粘贴
    • 2.1 先看控制粘贴的3个按钮
      • 2.1.1 工具栏粘贴按钮
      • 2.1.2 存在的问题
    • 2.2 不解决按钮问题的情况下
      • 2.2.1 使用`ctrl + v`粘贴带格式的
      • 2.2.2 使用`ctrl + shift + v`粘贴不带格式的
    • 2.2 解决问题
      • 2.2.1 先看效果
      • 2.2.2 解决问题的核心代码
      • 2.2.3 效果的核心代码
  • 3. 首行缩进问题
    • 3.1 看自带的缩进效果
      • 3.1.1 缩进效果
      • 3.1.2 分析(关于margin-left:40px)
      • 3.1.3 替代属性(关于text-indent)
    • 3.2 修改源码ckeditor.js
      • 3.2.1 格式化被压缩的ckeditor.js
      • 3.2.2 修改 ckeditor.js 文件
      • 3.2.3 修改后,看效果
    • 3.3 其他方法——使用专用的首行缩进插件
  • 4. 下载项目——拿来即用

1. 前言——CKEditor4快速入门

  • 关于CKEditor4快速入门,可参考下面的文章:
    富文本编辑器CKEditor4简单使用-01.

    富文本编辑器CKEditor4简单使用-02(常用插件安装及使用).

    富文本编辑器CKEditor4简单使用-03(图片上传、可拖拽可复制粘贴).

    富文本编辑器CKEditor4简单使用-04(跟源码设置image2插件图片的默认宽高等相关配置).

    富文本编辑器CKEditor4简单使用-05(开发自定义插件入门).

    富文本编辑器CKEditor4简单使用-06(开发自定义插件——中级篇Part1).

2. 默认情况下的粘贴

2.1 先看控制粘贴的3个按钮

2.1.1 工具栏粘贴按钮

  • 如下:
    在这里插入图片描述

2.1.2 存在的问题

  • 3个按钮无论点击哪个都有下面的问题,问题如下:

    您的浏览器不支持通过工具栏或右键菜单进行粘贴,请按 Ctrl+V 进行粘贴
    

    在这里插入图片描述

  • 右击粘贴一样的错误提示
    在这里插入图片描述

2.2 不解决按钮问题的情况下

2.2.1 使用ctrl + v粘贴带格式的

  • 如果不处理能不能使用,能,只能通过键盘进行粘贴,如下是使用ctrl + v粘贴:
    • 从word里粘贴,原文如下:
      在这里插入图片描述
    • 使用ctrl + v进行粘贴,效果如下:
      在这里插入图片描述

2.2.2 使用ctrl + shift + v粘贴不带格式的

  • 原文还是上面的word里的内容,如果使用ctrl + shift + v粘贴到creditor4里的话,格式消除,效果如下:
    在这里插入图片描述
  • 自己玩的话感觉没什么问题,带格式的粘贴和不带格式的粘贴都能实现,感觉不处理也行,如果你觉得这样实现已经很好了的话,那至少隐藏上面的3个按钮,省的一点就报错,也挺闹心的,如果想解决错误的话,请继续……

2.2 解决问题

2.2.1 先看效果

  • 如下:
    在这里插入图片描述
    在这里插入图片描述
  • 如果要不带格式的,选择中间那个不带格式的按钮即可,不演示了。
  • 另外,第一个按钮(粘贴)和第三个(粘贴来自word),粘贴后的效果一样,目前不清楚区别在哪里!

2.2.2 解决问题的核心代码

  • 如下:
    在这里插入图片描述

2.2.3 效果的核心代码

  • test.html 如下:
    <!doctype html>
    <html lang="en">
    
    <head>
      <meta charset="utf-8">
      <meta name="robots" content="noindex, nofollow">
      <title>Setting text part language</title>
      <script src="../ckeditor/ckeditor.js"></script>
    </head>
    
    <body>
      <textarea cols="80" id="editor2" name="editor2" rows="10"></textarea>
    
      <script>
        var editor = CKEDITOR.replace('editor2', {
          extraPlugins: 'language',
          language_list: ['ar:Arabic:rtl', 'fr:French', 'he:Hebrew:rtl', 'es:Spanish'],
          height: 270,
          scayt_customerId: '1:Eebp63-lWHbt2-ASpHy4-AYUpy2-fo3mk4-sKrza1-NsuXy4-I1XZC2-0u2F54-aqYWd1-l3Qf14-umd',
          scayt_sLang: 'auto',
          // removeButtons: 'PasteFromWord'
        });
    
        editor.on("beforeCommandExec", function (event) {
            // 显示粘贴按钮的粘贴对话框并右键单击粘贴
            if (event.data.name == "paste") {
                event.editor._.forcePasteDialog = true;
            }
            // 不要显示Ctrl+Shift+V的粘贴对话框
            if (event.data.name == "pastetext" && event.data.commandData.from == "keystrokeHandler") {
                event.cancel();
            }
        });
    
      </script>
    </body>
    
    </html>
    
  • config.js如下:
    CKEDITOR.editorConfig = function( config ) {
    
    	// 启用皮肤
    	config.skin = 'office2013';
    
    };
    
    

3. 首行缩进问题

3.1 看自带的缩进效果

3.1.1 缩进效果

  • 上面粘贴效果我们可以发现,即便是带格式的效果也丢失了原本word内容里的首行缩进效果,所以还得处理首行缩进问题,工具栏里有缩进按钮,不妨先看看此按钮的效果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.1.2 分析(关于margin-left:40px)

  • 看上面缩进后的源码可知,在内容里的整个<p>标签里添加了属性margin-left:40px,所以导致整个段落都缩进了,因为这个属性不是首行缩进属性,而是CSS中用于设置元素左侧外边距(margin)的属性。它可以接受各种长度单位(如像素、百分比等),用来调整元素的左侧空白区域大小

3.1.3 替代属性(关于text-indent)

  • 如果想解决上面的问题,应该使用text-indent属性而不是margin-left。

  • text-indent是CSS样式中的一个属性,用于设置段落首行的缩进。可以通过设置具体数值或者百分比值来实现不同的缩进效果。例如,设置text-indent: 2em;表示段落首行的缩进为2个字母宽度。

    使用text-indent属性可以使文章看起来更加整洁美观,也有助于提高文章的可读性。此外,text-indent属性也可以用于制作特殊效果,比如将图片与文本对齐时使用。

  • 怎么解决呢?请继续……

3.2 修改源码ckeditor.js

3.2.1 格式化被压缩的ckeditor.js

  • 修改前如果你的ckeditor.js没有被压缩过,或者已经格式化过,可以跳过此步骤,如果需要格式化的,去下面的地址,在线格式化即可:
    https://beautifier.io/.
    在这里插入图片描述

3.2.2 修改 ckeditor.js 文件

  • 搜索 margin-left(还不知道要修改的位置,但是知道了根据上面的推断要把margin-left替换成text-indent) 或 indent_processed(已经知道了要修改的位置,搜索这个更方便)
  • 具体修改位置如下:
    在这里插入图片描述
    在这里插入图片描述

3.2.3 修改后,看效果

  • 如下:
    在这里插入图片描述

3.3 其他方法——使用专用的首行缩进插件

  • 当然,如果你想保留之前的缩进插件,还想实现首行缩进的话,那可以开发一个首行缩进的插件,这里可以参考下面开发插件的文章,具体实现自己可以研究一下!

    富文本编辑器CKEditor4简单使用-05(开发自定义插件入门).

    富文本编辑器CKEditor4简单使用-06(开发自定义插件——中级篇Part1).

  • 不想开发,想要现成的,有没有现成的插件,当然了,只要你要官网应有尽有,只有你想不到的,如何使用首行缩进插件直接解决,看下篇文章,如下:

    富文本编辑器CKEditor4简单使用-08(段落首行缩进插件 + 处理粘贴 Microsoft Word 中的内容后保持原始内容格式(包括首行缩进)).

4. 下载项目——拿来即用

  • 关于皮肤插件效果以及其他入门使用,请看上面介绍的入门文章。也可以下载项目,拿来即用, 包括各种常用的插件(备注:项目里是用插件解决的首行缩进,不包含本次的修改修改源码ckeditor.js,因为插件解决最为合理),项目拿来即用,如下:

    ckeditor4(4.22.1-含上传图片、快速表格、首行缩进等插件).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1640609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三维图形学知识分享---求平面与模型相交线

在CGAL&#xff08;Computational Geometry Algorithms Library&#xff09;中&#xff0c;Polygon_mesh_processing模块提供了用于处理多边形网格数据结构的功能。其中&#xff0c;surface_intersection函数是用来计算模型的表面相交线的工具。 CGAL_Mesh mesh_orcl;std::vect…

C++ 函数 参数与返回值

#一 参数与返回值 回顾文件读数据功能 文件读数据 1函数参数传值调用过程 将函数调用语句中的实参的一份副本传给函数的型材。 简单的值的传递&#xff0c;实参的值没有发生变化。 2 函数参数传值调用过程 传地址调用 将变量的地址传递给函数的形参 形参和实参指向了同…

SpringBoot文件上传+拦截器

1、resource static下有个图片&#xff0c;希望浏览器可以查看这个图片 访问&#xff1a; 若yml设置路径&#xff0c;则可以定义在static下才可以访问 classpath代表类路径&#xff0c;都在target下 也就是项目在运行后的resource下的文件都会到classes下去 无需在target下创…

MES(制造执行系统)与PDCA循环,斩不断理还乱的关系。

MES系统算是B端系统中比较复杂的一种&#xff0c;这与我国制造业标准化程度较低有一定的关联&#xff0c;MES的存在就是要更好执行PDCA循环&#xff0c;二者关联是千丝万缕的&#xff0c;B系统提升专家借此为大家分享一下。 一、什么是PDCA PDCA&#xff08;Plan-Do-Check-Ac…

前端Web开发基础知识

HTML定义 超文本标记语言&#xff08;英语&#xff1a;HyperText Markup Language&#xff0c;简称&#xff1a;HTML&#xff09;是一种用于创建网页的标准标记语言。 什么是 HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup LanguageH…

# IDEA 复制项目 Module 出现 不同模块下的 Product 类报错

IDEA 复制项目 Module 出现 不同模块下的 Product 类报错 我们 用 IDEA 复制项目 Module 出现 不同模块下的 Product 类报错&#xff0c;发现复制的 module 名称没有改变或者 java 文件夹后面还有原项目 source root 字样&#xff0c;maven 父子项目没有标识等问题。 解决方法…

QQ+微信聊天记录分析工具,allin~

QQ群 ... QQ个人 微信群 个人朋友圈 更多维度有待探索~ 工具下载 TencentRecordAnalysisV1.0.2.zip 蓝奏云&#xff1a;链接: lanzoub.com/b00rn0g47e 密码:9hww 百度云&#xff1a;链接: pan.baidu.com/s/1Gf5EpJ 提取码: hp2p

Stm32CubeMX 为 stm32mp135d 添加 adc

Stm32CubeMX 为 stm32mp135d 添加 adc 一、启用设备1. adc 设备添加2. adc 引脚配置2. adc 时钟配置 二、 生成代码1. optee 配置 adc 时钟和安全验证2. linux adc 设备 dts 配置 bringup 可参考&#xff1a; Stm32CubeMX 生成设备树 一、启用设备 1. adc 设备添加 启用adc设…

R语言学习—1—将数据框中某一列数据改成行名

将数据框中某一列数据改成行名 代码 结果

DHCPv4_CLIENT_ALLOCATING_03: 发送DHCPREQUEST - 必须包含‘服务器标识符‘

测试目的&#xff1a; 验证客户端发送的DHCPREQUEST消息中是否包含“服务器标识符”选项&#xff0c;以指示它选择的服务器。 描述&#xff1a; 本测试用例旨在确保DHCP客户端在广播DHCPREQUEST消息时&#xff0c;必须包含“服务器标识符”选项。该选项用于指明客户端选择了…

Universal Thresholdizer:将多种密码学原语门限化

参考文献&#xff1a; [LS90] Lapidot D, Shamir A. Publicly verifiable non-interactive zero-knowledge proofs[C]//Advances in Cryptology-CRYPTO’90: Proceedings 10. Springer Berlin Heidelberg, 1991: 353-365.[Shoup00] Shoup V. Practical threshold signatures[C…

[嵌入式系统-53]:嵌入式系统集成开发环境大全 ( IAR Embedded Workbench(通用)、MDK(ARM)比较 )

目录 一、嵌入式系统集成开发环境分类 二、由MCU芯片厂家提供的集成开发工具 三、由嵌入式操作提供的集成开发工具 四、由第三方工具厂家提供的集成开发工具 五、开发工具的整合 5.1 Keil MDK for ARM 5.2 IAR Embedded Workbench&#xff08;通用&#xff09;、MDK&…

240503-关于VisualStudio2022社区版的二三事

240503-关于VisualStudio2022社区版的二三事 1 常用快捷键 快捷键描述AltEnter选中代码片段以提取方法Alt上下箭头移动选中的代码片段F12转到方法定义CtrlR*2批量修改选中的变量名称 2 自动生成构造函数 3 快速重写父类方法 4 节约时间&#xff1a;写代码使用“头插法”&…

深度解析 Spring 源码:从BeanDefinition源码探索Bean的本质

文章目录 一、BeanDefinition 的概述1.1 BeanDefinition 的定位1.2 BeanDefition 的作用 二、BeanDefinition 源码解读2.1 BeanDefinition 接口的主要方法2.2 BeanDefinition 的实现类2.2.1 实现类的区别2.2.2 setBeanClassName()2.2.3 getDependsOn()2.2.4 setScope() 2.3 Bea…

用双目相机实现坐标标定

一&#xff1a;相机参数设置和计算 镜头参数&#xff1a;MF2808-10MP 靶面尺寸2/3 &#xff0c;视场角&#xff08;对角水平垂直&#xff09; 69.758.545.5 焦距&#xff1a;8mm&#xff0c;分辨率&#xff1a;16241240 1.1视场角的计算 图像分辨率越高&#xff0c;双目匹…

FP16、BF16、INT8、INT4精度模型加载所需显存以及硬件适配的分析

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Arduino 推出带 Wi-Fi的 32 位 UNO 板

Arduino 推出了下一代 UNO 板&#xff0c;引入了 32 位 Renesas 微控制器和 Espressif ESP32-S3 模块、一键云连接和大量 I/O 以及 128 红色 LED 矩阵。新型 UNO R4 板有两个版本&#xff0c;带 Wi-Fi 连接和不带 Wi-Fi 连接&#xff0c;并保持了 UNO R3 的外形尺寸、屏蔽兼容性…

分布式事务—> seata

分布式事务之Seata 一、什么是分布式事务&#xff1f; 分布式事务是一种特殊类型的事务&#xff0c;它涉及多个分布式系统中的节点&#xff0c;包括事务的参与者、支持事务的服务器、资源服务器以及事务管理器。 在分布式事务中&#xff0c;一次大型操作通常由多个小操作组成…

jvm垃圾回收机制介绍

JVM&#xff08;Java虚拟机&#xff09;是Java程序的运行环境&#xff0c;它负责执行字节码文件。JVM的工作原理主要包括以下几个部分&#xff1a;类加载器、执行引擎、垃圾收集器和内存管理。类加载器负责加载字节码文件并将其转换成Java平台上的机器码&#xff0c;执行引擎负…

vue3 + ts 快速入门(全)

文章目录 学习链接1. Vue3简介1.1. 性能的提升1.2.源码的升级1.3. 拥抱TypeScript1.4. 新的特性 2. 创建Vue3工程2.1. 基于 vue-cli 创建2.2. 基于 vite 创建&#xff08;推荐&#xff09;vite介绍创建步骤项目结构安装插件项目结构总结 2.3. 一个简单的效果Person.vueApp.vue …