答案:通过contenteditable结合自定义命令栈实现富文本编辑器的撤销重做功能。1. 使用contenteditable使div可编辑;2. 维护undoStack和redoStack两个栈保存操作历史;3. 监听input、mouseup等事件并防抖保存状态;4. 实现undo/redo方法,切换历史状态;5. 优化包括限制步数、比较内容变化、合并连续输入及光标位置处理。核心是手动管理DOM快照而非依赖浏览器默认行为。

实现一个支持撤销和重做的富文本编辑器,核心在于记录用户操作的历史状态,并在需要时恢复到某个历史版本。现代浏览器提供了 document.execCommand(已废弃但仍可用)或更推荐的 Content Editable + Selection & Range API 来操作富文本内容,结合自定义命令栈管理,可以稳定实现撤销重做功能。
将一个元素设置为可编辑:
这个 div 就成为一个富文本编辑区域,用户可以加粗、换行、插入图片等。但原生不提供撤销重做管理,需自行实现。
不要依赖浏览器自带的 document.execCommand('undo'),它行为不可控且不利于跨平台。应手动保存每次变更前的内容快照,并维护两个栈:
每次用户输入或格式化操作前,先保存当前 HTML 内容:
function s*eState() {通过监听 keyup、input、mouseup 等事件判断是否需要保存状态:
YouMind
AI内容创作和信息整理平台
207
查看详情
editor.addEventListener('input', () => {使用防抖函数控制 s*eState 的调用频率,比如延迟 500ms 执行,防止打字过程中每敲一个字母都存一次。
定义两个方法:
function undo() {注意:undo 保留至少一个状态,防止栈空。每次撤销把当前状态推入重做栈。
基本上就这些。关键是不依赖浏览器默认行为,自己掌控状态快照。虽然 innerHTML 存储不够高效,但对于中小型编辑器足够实用。如果追求极致,可改用差分算法或操作变换(OT),但复杂度会显著上升。
以上就是如何实现一个支持撤销和重做的富文本编辑器?的详细内容,更多请关注其它相关文章!
# 非标准
# 乐山市网站推广
# 三水百度推广网站报价
# 新产品营销推广费用
# 兴城网站设计优化
# 望谟整合营销推广
# 智能镜子推广营销方案
# 新乡专业的网站建设
# 南京营销推广要多少钱
# 淮北移动端关键词排名
# 丽水网站优化推荐哪家好
# 最多
# 鼠标
# html
# 只在
# 防抖
# 如何实现
# 编辑器
# 表单
# 自定义
# 重做
# red
# 内存占用
# 栈
# 浏览器
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
鸿蒙单条备忘录如何加密
Dash应用中自定义HTML页面标题与网站图标(F*icon)的实用指南
消除网页顶部意外空白线:CSS布局常见问题与解决方案
iQOO手机信号差网络不稳定怎么办 信号问题原因排查与增强设置【攻略】
济南公交卡手机充值指南
Windows Audio服务启动失败怎么办_电脑没声音的终极服务修复法【修复】
Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法
Composer reinstall命令重装损坏的包
荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化
excel怎么计算平均值 excel平均函数*ERAGE使用教学
WPS文字如何进行简繁转换
抖音赚钱快速入门_新手必看的抖音赚钱步骤
《下一站江湖2》风神腿获取攻略
德邦快递收费标准详解
动漫之家观看全集库 动漫之家免费资源网地址
ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算
iSpring三分屏制作教程
解决Pandas DataFrame高度碎片化警告:高效创建多列的策略
POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩
《雷电模拟器》截图方法介绍
抖音如何进行蓝V认证 抖音企业号申请所需资料与流程
使用VS Code调试Python代码:从入门到精通
《全民k歌》网页版最新登录入口一览
WooCommerce 新客户订单自动添加管理员备注教程
Flash AS3.0简易相册制作
奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧
什么是Satis,如何用它搭建一个私有的composer仓库?
4399小游戏下装链接 4399小游戏下载链接入口
Pydantic 中“schema”字段命名冲突的解决方案
OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南
抖音号已注销怎么解绑企业认证?不解绑企业认证会怎样?
word文档行距怎么调?word文档调行距的操作步骤
Go语言中方法接收器的选择:值类型还是指针类型?
如何取消数字签名
如何通过settings.json个性化您的VS Code体验
VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略
Animex动漫社社登录官网 Animex动漫社资源社入口直达
《猎聘》筛选猎头岗位方法
猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程
人教版电子教材在线获取指南
教育查询官方网站入口 教育个人档案查询免费官网
苹果电脑如何快速查看电池状态 苹果电脑电池信息快捷方法
手机耗电快是什么原因 延长手机电池续航时间的设置方法【详解】
Lar*el Socialite单设备登录策略:实现用户唯一会话管理
虫虫漫画绿色安全入口_虫虫漫画绿色安全入口安全看漫画
《随手记》备份数据方法
驱动人生:游戏修复指南
《我的恋爱逃生攻略》中文名字输入方法
风车动漫官网首页入口登录 风车动漫在线观看正版地址
《腾讯相册管家》注销账号方法
2025-10-02
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。