vue项目使用vue-quill-editor,光标位置控制(已解决)

vue-quill-editor自定义工具栏,确定光标位置、插入内容,获取选中的内容。 vue-quill-editor自定义工具栏、确定光标位置、插入内容。 阅读详情
AI摘要

本文介绍如何在Vue项目中集成Vue Quill Editor,并实现全局引入、自定义工具栏选项、中文鼠标悬停提示及自定义事件。重点讲解了如何设置默认光标位置和配置选项。

查了网上很多资料使用,都没有解决,故记录在此

全局引入

import Vue from 'vue'
import VueQuillEditor from 'vue-quill-editor'

// require styles
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

Vue.use(VueQuillEditor)

在页面上写组件

<quill-editor
    v-model="content"
    ref="myQuillEditor"
    :options="editorOption"
    @blur="onEditorBlur($event)"
    @focus="onEditorFocus($event)"
    @change="onEditorChange($event)"
    @ready="onEditorReady($event)">
</quill-editor>

配置option

editorOption: {
        modules: {
          toolbar: [
            ['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线
            ['blockquote', 'code-block'], // 引用  代码块
            [{ header: 1 }, { header: 2 }], // 1、2 级标题
            [{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表
            [{ script: 'sub' }, { script: 'super' }], // 上标/下标
            [{ indent: '-1' }, { indent: '+1' }], // 缩进
            [{ direction: 'rtl' }], // 文本方向
            [{ size: ['12', '14', '16', '18', '20', '22', '24', '28', '32', '36'] }], // 字体大小
            [{ header: [1, 2, 3, 4, 5, 6] }], // 标题
            [{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
            // [{ font: ['songti'] }], // 字体种类
            [{ align: [] }], // 对齐方式
            ['clean'], // 清除文本格式
            ['image', 'video'] // 链接、图片、视频
          ]
        },
        placeholder: '请输入正文'
      },

给工具栏鼠标悬停加上中文释义

找到元素可以看到,每一个tool都有一个class, 这个的原理就是先把所有的class列出来,然后根据class获取元素,给它加上title属性就可以了

const titleConfig = [
  { Choice: '.ql-insertMetric', title: '跳转配置' },
  { Choice: '.ql-bold', title: '加粗' },
  { Choice: '.ql-italic', title: '斜体' },
  { Choice: '.ql-underline', title: '下划线' },
  { Choice: '.ql-header', title: '段落格式' },
  { Choice: '.ql-strike', title: '删除线' },
  { Choice: '.ql-blockquote', title: '块引用' },
  { Choice: '.ql-code', title: '插入代码' },
  { Choice: '.ql-code-block', title: '插入代码段' },
  { Choice: '.ql-font', title: '字体' },
  { Choice: '.ql-size', title: '字体大小' },
  { Choice: '.ql-list[value="ordered"]', title: '编号列表' },
  { Choice: '.ql-list[value="bullet"]', title: '项目列表' },
  { Choice: '.ql-direction', title: '文本方向' },
  { Choice: '.ql-header[value="1"]', title: 'h1' },
  { Choice: '.ql-header[value="2"]', title: 'h2' },
  { Choice: '.ql-align', title: '对齐方式' },
  { Choice: '.ql-color', title: '字体颜色' },
  { Choice: '.ql-background', title: '背景颜色' },
  { Choice: '.ql-image', title: '图像' },
  { Choice: '.ql-video', title: '视频' },
  { Choice: '.ql-link', title: '添加链接' },
  { Choice: '.ql-formula', title: '插入公式' },
  { Choice: '.ql-clean', title: '清除字体格式' },
  { Choice: '.ql-script[value="sub"]', title: '下标' },
  { Choice: '.ql-script[value="super"]', title: '上标' },
  { Choice: '.ql-indent[value="-1"]', title: '向左缩进' },
  { Choice: '.ql-indent[value="+1"]', title: '向右缩进' },
  { Choice: '.ql-header .ql-picker-label', title: '标题大小' },
  { Choice: '.ql-header .ql-picker-item[data-value="1"]', title: '标题一' },
  { Choice: '.ql-header .ql-picker-item[data-value="2"]', title: '标题二' },
  { Choice: '.ql-header .ql-picker-item[data-value="3"]', title: '标题三' },
  { Choice: '.ql-header .ql-picker-item[data-value="4"]', title: '标题四' },
  { Choice: '.ql-header .ql-picker-item[data-value="5"]', title: '标题五' },
  { Choice: '.ql-header .ql-picker-item[data-value="6"]', title: '标题六' },
  { Choice: '.ql-header .ql-picker-item:last-child', title: '标准' },
  { Choice: '.ql-size .ql-picker-item[data-value="small"]', title: '小号' },
  { Choice: '.ql-size .ql-picker-item[data-value="large"]', title: '大号' },
  { Choice: '.ql-size .ql-picker-item[data-value="huge"]', title: '超大号' },
  { Choice: '.ql-size .ql-picker-item:nth-child(2)', title: '标准' },
  { Choice: '.ql-align .ql-picker-item:first-child', title: '居左对齐' },
  { Choice: '.ql-align .ql-picker-item[data-value="center"]', title: '居中对齐' },
  { Choice: '.ql-align .ql-picker-item[data-value="right"]', title: '居右对齐' },
  { Choice: '.ql-align .ql-picker-item[data-value="justify"]', title: '两端对齐' }
]

然后在function中循环,找到元素,添加title,至于放在那个function根据具体情况看,反正得是在页面上已经渲染好元素之后,不然会获取不到元素,可以直接放在@ready的函数里面

for (let item of titleConfig) {
        let tip = document.querySelector('.quill-editor ' + item.Choice)
        if (!tip) continue
        tip.setAttribute('title', item.title)
}

给工具栏功能添加自定义事件

editorOption: {
        modules: {
          toolbar: {
            container: [
              ['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线
              ['blockquote', 'code-block'], // 引用  代码块
              [{ header: 1 }, { header: 2 }], // 1、2 级标题
              [{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表
              [{ script: 'sub' }, { script: 'super' }], // 上标/下标
              [{ indent: '-1' }, { indent: '+1' }], // 缩进
              [{ direction: 'rtl' }], // 文本方向
              [{ size: ['12', '14', '16', '18', '20', '22', '24', '28', '32', '36'] }], // 字体大小
              [{ header: [1, 2, 3, 4, 5, 6] }], // 标题
              [{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
              // [{ font: ['songti'] }], // 字体种类
              [{ align: [] }], // 对齐方式
              ['clean'], // 清除文本格式
              ['image', 'video'] // 链接、图片、视频
            ],
            handlers: {
              'image': function (value) {
                if (value) { // value === true
                  document.querySelector('.avatar-uploader input').click()
                } else {
                  this.quill.format('image', false)
                }
              }
            }
          }
        },
        placeholder: '请输入正文'
      }

遇到的问题:

给editor设置默认值,光标位置在句首,无法显示在句尾:

附上官方文档地址:选区(selection) · Quill官方中文文档 · 看云

MOSFET和IGBT栅极驱动器电路的基本原理学习(2) 1.PWM直接驱动 驱动主开关晶体管栅极的最简单方法是利用 PWM 控制器的栅极驱动输出,如图 (1)如 图 8中所示,PWM 控制器和 MOSFET 之间可能有较大距离。由于栅极驱动和接地环路迹线形成的环路,这个距离形成了寄生电感,从而降低了开关速度,并导致栅极驱动波形中形成振铃。为了降低与栅极驱动连接相关的电感,需要更宽的 PCB 迹线。 (2)直接栅极驱动的另一个问题是PWM 控制器的驱动电流能力有限。极少有集成电路能提供高于 1A 的峰值栅极驱动能力。 2.旁路电容的确定 (1)位置 如果是独立的 阅读详情

相关推荐

上、下拉电阻(定义、强弱上拉、常见作用、吸电流、拉电流、灌电流)

1.上、下拉电阻定义 上拉电阻是把一个信号通过一个电阻接到电源(Vcc),下拉电阻是一个信号通过一个电阻接到地(GND)。 2.强上拉、弱上拉 强上拉、弱上拉的强弱只是上拉电阻的阻值不同,没有什么严格区分。例如:50Ω上拉,一般成为强上拉;100kΩ上拉则称为弱上拉。下拉也是一样的。强拉电阻的极端就是0Ω电阻,即将信号线直接与电源或低相连接。 3.上、下拉电阻的作用 因为上下拉电阻的作用概念很宽泛,不用领域的使用方法也不同,常见使用方法整理如下: ...

小浪宝宝的博客 3万+

解决VUE 富文本 quill-editor再使用时自动获取光标

1.再使用富文本编辑器进行修改查看的操作时,富文本编辑器会自动获取光标,当有多个富文本编辑器时页面会直接从底部显示而不是从头部显示。如: 2.当页面打开时光标会自动在“关于我们*”框中显示。 那我们该如何让光标不显示,同时页面从顶部开始呢? 其实很简单,只需要: //刚开始时,不聚焦 //具体位置可根据情况也可以放在赋值之后 //1秒之后可以点击(聚焦) 要在mounted钩子函数中做处理,因为需要在元素生成完毕以后才会做到的操作 ...

Youyzq的博客 2682

告别测序污染:手把手教你用Decontam+SCRUB+FEAST完成微生物组数据清洗全流程

本文详细解析了使用Decontam、SCRUB和FEAST三大工具完成微生物组数据清洗的全流程。从环境准备、数据导入到污染物识别、样本间污染校正及溯源分析,提供了一套可复用的污染校正工作流,帮助研究者提升数据质量,确保后续分析的可靠性。

weixin_33462927的博客 316

Quill富文本编辑器设置焦点

quill富文本编辑器

qq_33475629的博客 1305

Windows报错“The system cannot find the file specified“的PATH环境变量解决方案

摘要: Windows系统中出现"The system cannot find the file specified"错误通常因PATH环境变量配置问题导致。本文提供解决方案:1)检查并修正PATH变量(通过命令行或图形界面添加缺失路径);2)确认程序安装路径及拼写无误;3)恢复误改的系统变量。示例演示了Python路径配置及无效路径清理方法,建议谨慎修改变量、使用绝对路径并定期检查。附参考表格详述操作步骤,帮助用户高效解决问题并优化系统环境。

shejizuopin的博客 3515

开源大模型推理GPU资源评估以及优化

随着大模型的火热很多项目中都使用到了开源大模型,这时候准确评估大模型的GPU资源非常重要,主要有下面几个方面:GPU是昂贵的资源。高估内存需求可能导致在硬件上的不必要支出,而低估则可能导致系统故障或性能下降。:适当的内存管理确保模型高效运行,能够更快地响应用户并处理更多并发请求。:随着需求的增长,理解内存需求对于在不牺牲性能或产生高昂成本的情况下扩展服务至关重要。尽管其重要性显而易见,但计算用于服务大型语言模型(LLM)的GPU内存并不简单。

优快云DN的博客 3115

vue-quill-editor使用中遇到的坑 - 回显数据后鼠标光标会自动锁定到文本框内

vue-quill-editor使用中遇到的坑 - 回显数据后鼠标光标会自动锁定到文本框内 发现问题: 回显页面本来就很长每次编辑内容时就会发现,哎嗨! 我的页面为啥会滚动到最下面了呢(组件就在最后面用的).刚开始没发现是光标锁定的原因就尝试了一下 window.scrollTo(0,0)发现并没有什么卵用...之后也是意外看到,我去.鼠标光标怎么在这儿了.好了 下面直接放解决方法了... this.$refs.myQuillEditor.quill.enable(false); setTimeout(()

weixin_43630802的博客 2131

【Matlab】matlab代码实现迭代学习控制

该文介绍了在Matlab中实现迭代学习控制(ILC)的方法。ILC通过利用历史轨迹数据来优化重复任务的控制性能。文章提供了一个步进电机控制示例,包括:1)定义正弦轨迹;2)设置100次迭代和0.1学习率;3)建立二阶系统模型;4)执行ILC算法计算控制输入;5)绘制期望轨迹与实际输出的对比图。该示例展示了ILC的基本实现过程,并指出实际应用可能需要更复杂的设计。代码演示了误差计算、控制输入更新和结果可视化等关键步骤。

unber的博客 200

富文本编辑器 VUE-QUILL-EDITOR 使用教程

vue-quill-editor 默认的是以 base64 保存图片,会直接把图片 base64 和内容文本一起以字符串的形式提交到后端。这样小图片还行,如果要上传大图片会提示上传失败,优秀的前端打字员显然不会这样做。一般的,我们在使用的时候并不需要这么多功能,可以适当的对编辑器配置项进行配置。到这里一个默认的富文本编辑器已经导入使用了,如下图所视!可以根据自己的实际需求,保留相应的工具栏。在指定的 vue 文件中引入。这样就完成了图片上传的功能。这样就导入完成了,如下图所示。

Gefangenes的博客 2833

华为面试手撕真题【求1-n的最小公倍数】

求1-n的最小公倍数

MISAYAONE的博客 2万+

分布式爬虫架构实战:Scrapy+RabbitMQ+浏览器池,百万级数据抓取成本直降60%(附架构图+源码)

任务调度瓶颈:Redis 作为消息队列,不支持复杂任务优先级,高并发下容易消息堆积,且单点故障会导致全量任务丢失;资源浪费严重:每个爬虫节点每次爬取动态页面都启动新浏览器,启动耗时3-5秒,CPU 占用率高达80%+,单机最多同时跑3个浏览器;扩展性差:新增节点需要手动同步任务队列,节点忙闲不均,无法根据任务量动态分配资源。# 从settings读取RabbitMQ配置# 注册信号:爬虫关闭时关闭RabbitMQ连接"""启动时建立RabbitMQ连接"""

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1617

后台管理系统回显难题:富文本编辑器自动聚焦与滚动问题解析

回显是将已保存数据重新映射到界面控件的单向数据流过程,其背后涉及接口返回时机、组件生命周期、格式转换与焦点管理等复杂机制。在后台管理系统中,富文本编辑器回显时常出现自动聚焦、页面滚动错位等异常,根源在于组件初始化时抢占了浏览器焦点,并触发了自动滚动行为。理解数据到达节点与组件状态的一致性,掌握blur、v-if重建、展示编辑分离等工程实践,能够有效规避这些隐患。本文结合quill-editor典型故障,梳理回显原理与排查方法,为维护内容编辑系统的前端开发者提供可直接落地的解决思路。

weixin_29682503的博客 176

104、线缆与终端匹配:特性阻抗、双绞线规格与端接电阻优化策略

摘要: CAN总线物理层可靠性取决于线缆特性阻抗、双绞线规格与终端电阻的精准匹配。核心要点包括: 特性阻抗须严格匹配120Ω(±10%),反射系数需≤0.05,线缆建议选用Belden 3086A等实测达标型号,避免网线替代; 双绞线应选AWG22~24纯铜线,绞距≤30mm,工业环境需屏蔽层单端接地,杜绝铜包铝线; 终端电阻需选用金属膜电阻(0.5W以上),阻值按实测线缆阻抗微调,长距离可采用分裂终端(60Ω+4.7nF)优化信号完整性; 拓扑适配:星型/树型拓扑需控制分支长度,环型拓扑必须断开; 实测验

2401_88858637的博客 51

解决Vue-Quill-Editor自动定位到文本框问题

使用:vue-quill-editor - npmhttps://www.npmjs.com/package/vue-quill-editor 我这边是又把他封装成了一个公共的组件便于使用,所以用了两个ref 解决问题: Vue-Quill-Editor: 父组件: 父组件请求完数据后进行如下操作 this.$refs.myquill.$refs.myQuillEditor.quill.enable(false) setTimeout(() => { th...

qq_41687299的博客 1018

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

vue-quill-editor 富文本框编辑器

基于quilljs实现的支持vue的富文本框编辑器 更多精彩 更多技术博客,请移步 asing1elife’s blog 官网 vue-quill-editor Toolbar Module - Quill vue-quill-image-upload 图片支持上传服务器并调整大小 在 package.json 中加入 "quill-image-extend-module": "^1...

asing1elife's blog 2900

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

quill/vue-quill-editor的基础使用,自定义工具栏介绍,重新写图片/视频上传方法,insertEmbed插入,设置光标位置,增/添加字体、字号

基础使用 <template> <div> <quill-editor ref="edit" v-model="content" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)" @change="onEditorChange($event)" /> </

初心 - 杨瑞超个人博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

解决quill-editor再使用时自动获取光标

解决富文本编辑器再使用时自动获取光标 1.再使用富文本编辑器进行修改查看的操作时,富文本编辑器会自动获取光标,当有多个富文本编辑器时页面会直接从底部显示而不是从头部显示。如: 2.当页面打开时光标会自动在“关于我们*”框中显示。 那我们该如何让光标不显示,同时页面从顶部开始呢? 其实很简单,只需要: //刚开始时,不聚焦 //具体位置可根据情况也可以放在赋值之后 //1秒之后可以点击(聚焦) 这样我们的问题就解决了。 ...

gradonisis的博客 2930

vue----富文本编辑vue-quill-editor如何把图片/文本插到光标位置

// 获取编辑器对象 let quill = this.$refs.myQuillEditor.quill; // 获取编辑器光标位置 let length = quill.selection.savedRange.index; // 插入图片至光标位置,imgUrl为图片地址 quill.insertEmbed(length, 'image', this.imgUrl); // 移动光标...

Crazy_LinkFern的博客 2899

vue-quill-editor 获取无法获取光标位置

vue-quill-editor 获取无法获取光标位置 网上说富文本编辑器里没有内容输入,获取到的位置是null。 使用代码为: this.$refs.myQuillEditor.quill.index; 使用上边的代码,实际使用过程中,输入内容之后,依然获取不到光标位置 所以我使用的是下面代码 this.$refs.editer.quill.selection.savedRange....

沉睡的博客 1497

【已解决】vue-quill-editor 获取无法获取光标位置

this.$refs.myQuillEditor.quill.selection.savedRange.index 获取光标位置 答案来自SF

黑夜的风的博客 6467

vue-quill-editor 在光标位置插入文本

背景 在使用富文本的时候,有的需求需要点击按钮插入相应的文本内容以及突出样式, 解决方法 在无样式的情况 (insertText也可以设置样式(如字体颜色),但是用户输入新内容也会存在颜色) // 文本内容 const text = 'hello' // 获取编辑器对象 let quill = this.$refs.myQuillEditor.quill; // 获取编辑器光标位置 let index = quill.selection.savedRange.index; // 插.

luocheng101的博客 3834

vue-quill-editor富文本编辑器取消自动获取焦点

/解决富文本自动聚焦。这样打开之后就不是富文本的位置了。

weixin_42574985的博客 2132

vue富文本编辑器--vue-quill-editor

vue富文本编辑器 vue-quill-editor quill 富文本编辑器

huanhuan03的博客 5372

Vue中使用QuillEditor代替UEditor

Vue中使用Quill代替UEditor

比起未来可期,我更喜欢如约而至 1107

使用vue-quill-editor遇到的坑

html

qq_55576151的博客 4179

告别光标失控:vue-quill-editor文本插入点精确控制指南

你是否还在为富文本编辑器中光标位置不受控制而抓狂?当需要实现自动插入模板文本、自定义格式转换或内容校验时,光标总是跳到意外位置?本文将系统讲解vue-quill-editor中光标(插入点)控制的核心原理与实战技巧,帮助你彻底掌握文本编辑的精准操控。 读完本文你将掌握: - 光标位置的精准获取与设置方法 - 文本插入、替换与删除的原子级操作 - 复杂编辑场景下的光标状态管理策略 - 5个企业级实...

gitblog_01049的博客 541
上一篇: 关系图、股权结构图
下一篇: 前端面试题
jsPao
博客等级 码龄7年 549粉丝 107原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值