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

富文本编辑器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-含上传图片、快速表格、首行缩进等插件).

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux——基础IO2

引入 之前在Linux——基础IO(1)中我们讲的都是(进程打开的文件)被打开的文件 那些未被打开的文件呢&#xff1f; 大部分的文件都是没有被打开的文件&#xff0c;这些文件在哪保存&#xff1f;磁盘(SSD) OS要不要管理磁盘上的文件&#xff1f;(如何让OS快速定位一个文件) 要…

设计模式之拦截过滤器模式

想象一下&#xff0c;在你的Java应用里&#xff0c;每个请求就像一场冒险旅程&#xff0c;途中需要经过层层安检和特殊处理。这时候&#xff0c;拦截过滤器模式就化身为你最可靠的特工团队&#xff0c;悄无声息地为每一个请求保驾护航&#xff0c;确保它们安全、高效地到达目的…

Endnote X9 20 21如何把中文引用的et al 换(变)成 等

描述 随着毕业的临近&#xff0c;我在写论文时可能会遇到在引用的中文参考文献中出现“et al”字样。有的学校事比较多&#xff0c;非让改成等等&#xff0c;这就麻烦了。 本身人家endnote都是老美的软件&#xff0c;人家本身就是针对英文文献&#xff0c;你现在让改成等等&a…

JavaScript的操作符运算符

前言&#xff1a; JavaScript的运算符与C/C一致 算数运算符&#xff1a; 算数运算符说明加-减*乘%除/取余 递增递减运算符&#xff1a; 运算符说明递增1-- 递减1 补充&#xff1a; 令a1&#xff0c;b1 运算a b ab12ab22ab--10a--b00 比较(关系)运算符&#xff1a; 运算…

【ChatGPT with Date】使用 ChatGPT 时显示消息时间的插件

文章目录 1. 介绍2. 使用方法2.1 安装 Tampermonkey2.2 安装脚本2.3 使用 3. 配置3.1 时间格式3.2 时间位置3.3 高级配置(1) 生命周期钩子函数(2) 示例 4. 反馈5. 未来计划6. 开源协议7. 供给开发者自定义修改脚本的文档7.1 项目组织架构7.2 定义新的 Component(1) 定义一个新的…

提示找不到msvcr110.dll怎么办,分享多种靠谱的解决方法

当用户在操作计算机时遇到系统提示“找不到msvcr110.dll&#xff0c;无法继续执行代码”这一错误信息&#xff0c;这个问题会导致软件无法启动运行。本文将介绍计算机找不到msvcr110.dll的5种详细的解决方法&#xff0c;帮助读者解决这个问题。 一&#xff0c;关于msvcr110.dll…

《十六》QT TCP协议工作原理和实战

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QTcpSocket组件实现基于TCP的网络通信…

论文| Where Is Your Place, Visual Place Recognition?

论文| Where Is Your Place, Visual Place Recognition&#xff1f;

1.pytorch加载收数据(B站小土堆)

数据的加载主要有两个函数&#xff1a; 1.dataset整体收集数据&#xff1a;提供一种方法去获取数据及其label&#xff0c;告诉我们一共有多少数据&#xff08;就是自开始把要的数据和标签都收进来&#xff09; 2.dataloader&#xff0c;后面传入模型时候&#xff0c;每次录入数…

某站戴师兄——Excel学习笔记

1、拿到源数据第一件事——备份工作表&#xff0c;隐藏 Ctrlshift键L打开筛选 UV (Unique visitor)去重 是指通过互联网访问、浏览这个网页的自然人。访问网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。一天内同个访客多次访问仅计算一个UV。 PV …

【C++】详解STL的容器之一:list

目录 简介 初识list 模型 list容器的优缺点 list的迭代器 常用接口介绍 获取迭代器 begin end empty size front back insert push_front pop_front push_back pop_back clear 源代码思路 节点设计 迭代器的设计 list的设计 begin() end() 空构造 ins…

【编程题-错题集】chika 和蜜柑(排序 / topK)

牛客对于题目链接&#xff1a;chika和蜜柑 (nowcoder.com) 一、分析题目 排序 &#xff1a;将每个橘⼦按照甜度由高到低排序&#xff0c;相同甜度的橘子按照酸度由低到高排序&#xff0c; 然后提取排序后的前 k 个橘子就好了。 二、代码 1、看题解之前AC的代码 #include <…

企业计算机服务器中了halo勒索病毒怎么处理,halo勒索病毒解密流程

随着网络技术的不断发展&#xff0c;网络在企业生产运营过程中发挥着重大作用&#xff0c;很多企业利用网络开展各项工作业务&#xff0c;网络也大大提高了企业的生产效率&#xff0c;但随之而来的网络数据安全问题成为众多企业关心的主要话题。近日&#xff0c;云天数据恢复中…

机械臂标准DH建模及正运动学分析(以IRB4600型工业机械臂为例)

1. 前言 对于工业机械臂而言&#xff0c;运动学是不考虑力学特性的情况下对机械臂的几何参数与其位置、速度、加速度等运动特性的关系研究。DH建模是运动学的基础&#xff0c;全称为Denavit-Hartenberg建模方法&#xff0c;是一种广泛应用于机器人运动学中的建模技术。该方法通…

Python爬虫:XPath解析爬取豆瓣电影Top250示例

一、示例的函数说明&#xff1a; 函数processing()&#xff1a;用于处理字符串中的空白字符&#xff0c;并拼接字符串。 主函数程序入口&#xff1a;每页显示25部影片&#xff0c;实现循环&#xff0c;共10页。通过format方法替换切换的页码的url地址。然后调用实现爬虫程序的…

Unity Animation--动画剪辑

Unity Animation--动画剪辑 动画剪辑 动画剪辑是Unity动画系统的核心元素之一。Unity支持从外部来源导入动画&#xff0c;并提供创建动画剪辑的能力使用“动画”窗口在编辑器中从头开始。 外部来源的动画 从外部来源导入的动画剪辑可能包括&#xff1a; 人形动画 运动捕捉…

[力扣]——387.字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution {public int firstUniqChar(String s) {int[] count new int[256];// 统计每个字符出现的次数for(int i 0; i < s.length(); i){count[s.charAt(i)];}// 找第一个只出现一次的字符for(int i 0; i < s.lengt…

几个容器网络问题实战解析

容器云平台和容器网络紧密结合&#xff0c;共同构建了容器化应用程序的网络基础设施&#xff0c;实现了容器之间的通信、隔离和安全性。文中容器云平台采用的容器网络组件是calico&#xff0c;这个是业界普遍采用的一种方案&#xff0c;性能及安全性在同类产品中都是比较好的。…

linux下载安装JDK

查看系统是否自带 jdk java -version 一、jdk下载安装 jdk11下载 上传到 linux 以下说明已下载 解压 tar -xzvf jdk-11.0.23_linux-x64_bin.tar.gz 查看是否安装成功 二、linux配置JDK环境 sudo vim /etc/profile JAVA_HOME/may2024/jdk-11.0.23 JRE_HOME$JAVA_HOME/…

苍穹外卖项目

Day01 收获 补习git Git学习之路-CSDN博客 nginx 作用&#xff1a;反向代理和负载均衡 swagger Swagger 与 Yapi Swagger&#xff1a; 可以自动的帮助开发人员生成接口文档&#xff0c;并对接口进行测试。 项目接口文档网址&#xff1a; ​​​​​​​http://localhost:808…