如何实现一个支持撤销和重做的富文本编辑器?

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

如何实现一个支持撤销和重做的富文本编辑器?

实现一个支持撤销和重做的富文本编辑器,核心在于记录用户操作的历史状态,并在需要时恢复到某个历史版本。现代浏览器提供了 document.execCommand(已废弃但仍可用)或更推荐的 Content Editable + Selection & Range API 来操作富文本内容,结合自定义命令栈管理,可以稳定实现撤销重做功能。

1. 使用 contenteditable 基础结构

将一个元素设置为可编辑:

这个 div 就成为一个富文本编辑区域,用户可以加粗、换行、插入图片等。但原生不提供撤销重做管理,需自行实现。

2. 设计命令栈管理机制

不要依赖浏览器自带的 document.execCommand(‘undo’),它行为不可控且不利于跨平台。应手动保存每次变更前的内容快照,并维护两个栈:

undoStack:保存可撤销的操作(从新到旧) redoStack:保存可重做的操作(撤销后放入这里)

每次用户输入或格式化操作前,先保存当前 HTML 内容:

function saveState() {
  // 只在内容变化时保存
  if (undoStack.length === 0 || undoStack[0] !== editor.innerHTML) {
    undoStack.unshift(editor.innerHTML);
    // 超出最大步数则截断
    if (undoStack.length > MAX_STEPS) undoStack.pop();
    // 清空重做栈
    redoStack = [];
  }
}

3. 监听内容变化并触发保存

通过监听 keyup、input、mouseup 等事件判断是否需要保存状态:

editor.addEventListener(‘input’, () => {
  debouncedSave(); // 防抖,避免频繁输入时过多保存
});

editor.addEventListener(‘mouseup’, () => {
  saveState(); // 鼠标选择可能改变格式
});

使用防抖函数控制 saveState 的调用频率,比如延迟 500ms 执行,防止打字过程中每敲一个字母都存一次。

4. 实现 undo 和 redo 功能

定义两个方法:

function undo() {
  if (undoStack.length > 1) {
    const state = undoStack.shift();
    redoStack.unshift(state);
    editor.innerHTML = undoStack[0];
  }
}

function redo() {
  if (redoStack.length > 0) {
    const state = redoStack.shift();
    undoStack.unshift(state);
    editor.innerHTML = state;
  }
}

注意:undo 保留至少一个状态,防止栈空。每次撤销把当前状态推入重做栈。

5. 优化体验与性能

只在内容真正变化时保存:比较 innerHTML 是否不同 限制历史步数:如最多保存 50 步,防止内存占用过高 处理光标位置:高级场景下还需保存 selection 范围,恢复时还原光标 合并连续输入:短时间内连续输入视为一次操作

基本上就这些。关键是不依赖浏览器默认行为,自己掌控状态快照。虽然 innerHTML 存储不够高效,但对于中小型编辑器足够实用。如果追求极致,可改用差分算法或操作变换(OT),但复杂度会显著上升。

以上就是如何实现一个支持撤销和重做的富文本编辑器?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/35604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 22:35:35
下一篇 2025年11月4日 22:39:38

相关推荐

  • 电脑怎么登录欧意?ouyi欧意交易所pc端安装包下载

    电脑登录欧意交易所,并下载欧意交易所PC端安装包,是进入数字货币交易世界的关键一步。想象一下,你坐在电脑前,准备开启你的数字货币交易之旅,却发现不知道如何登录欧意交易所,或者找不到PC端安装包的下载入口。这无疑会让你感到沮丧。别担心,本文将详细为你解答这些问题,让你轻松上手,畅游数字货币市场。我们将…

    2025年12月8日
    000
  • 欧易网页版登陆入口 okx网页版链接入口

    欧易(OKX)作为全球领先的数字资产交易平台,提供安全、便捷的交易服务,支持现货、合约、期权等多种交易方式,并推出MetaX等创新产品,助力用户探索区块链世界。 欧易(OKX)交易所,作为全球领先的数字资产交易平台,以其强大的安全性、丰富的交易品种和便捷的用户体验赢得了全球数百万用户的信赖。它不仅提…

    2025年12月8日
    000
  • 2025欧易官方网页版链接 okx官方入口

    欧易(OKX)作为全球知名的数字资产交易平台,其网页版登陆入口是用户访问服务的核心通道。 欧易网页版登陆入口:如何安全找到官方通道? 欧易(OKX)作为全球知名的数字资产交易平台,其网页版登陆入口是用户访问服务的核心通道。需要明确的是,官方从未在第三方平台公开“固定链接”,用户需通过官方认可的方式自…

    2025年12月8日
    000
  • SEC警告尼日利亚人不要投资惩罚者硬币(符号:$ pun)

    美国证券交易委员会(sec)已对尼日利亚民众发出警示,提醒他们警惕一种名为“惩罚者硬币”的加密货币投资行为,该币也被称为$ pun。 近日,该机构在拉各斯发布声明指出,所谓的预售活动并未获得任何授权,也未得到监管机构的批准,并强调其运作方式与庞氏骗局极为相似。 声明中提到,$ PUN项目的发起人并未…

    2025年12月8日
    000
  • 币安正确入口最新网址2025

    要获取币安最新网址,建议通过官方渠道、可信赖的导航平台及官方App获取,并注意访问时的安全事项。1.关注币安官方社交媒体账号,认准认证标识;2.订阅币安官方邮件,及时接收通知;3.访问官方博客或新闻频道获取更新信息;4.使用信誉良好的导航网站查询最新网址;5.通过币安官方App内的公告或帮助中心获取…

    2025年12月8日
    000
  • 币安交易所怎么注册账户 币安交易所登录入口

    币安账户注册流程包括访问官网、点击注册、选择注册方式、填写信息、输入邀请码(可选)、完成验证、激活账户及设置双重验证。登录则需访问官网、点击登录按钮、输入信息、完成验证后登录。注意事项包括保护账户安全、使用强密码、定期更换密码、谨防钓鱼网站、了解交易规则并进行KYC认证。1.访问币安官网并确认网址正…

    2025年12月8日
    000
  • 欧易(okx)正确入口最新网址2025

    要安全访问欧易(OKX)官网,应通过官方渠道获取最新网址并采取多重安全措施。1.首选官方社交媒体、论坛和邮件订阅获取网址变更信息;2.通过官方应用商店下载APP以避免手动输入网址;3.警惕搜索引擎广告和不明链接,使用浏览器安全插件识别恶意网站;4.访问时确保网址使用HTTPS协议,定期修改强密码并启…

    2025年12月8日
    000
  • 欧易官方app下载安装入口 OKX官方下载app

    欧易OKX App是一款功能丰富的数字资产交易应用,提供实时行情、多种交易类型和专业工具。1.访问官网下载App;2.选择适合设备的版本;3.完成安装和注册登录;4.进行身份验证;5.开始交易并注意风险管理。注意事项包括通过官方渠道下载、设置高强度密码和开启二次验证等。 欧易OKX,作为全球领先的数…

    2025年12月8日
    000
  • Web3 AI(Web3ai)承诺将1,747%的ROI作为链链接(链接)和以太坊(ETH)绊倒

    chainlink(link)和以太坊(eth)依然是加密货币市场中的重要角色,但近期走势让部分交易者开始迟疑。 加密市场价格波动剧烈,最近的表现也让一些投资者陷入观望状态。 有分析师依然看好以太坊突破5,000美元大关,然而其价格走势似乎陷入了停滞。尽管已有至少七位股票交易员设定了5,000美元的…

    2025年12月8日
    000
  • Binance列表请参见主要上行空间,但波动率仍然存在

    on june 9, mirror tang, ceo of zerobase & salus, posted on x: “恭喜你研究出规律了,接下来规律就要变啦!” shortly after iosg ventures published an article discussing b…

    2025年12月8日
    000
  • 欧易交易所的登录入口 虚拟币交易所平台欧易ouyi官网登录入口

    欧易(OKX),作为全球领先的数字资产交易平台,以其卓越的安全性能、丰富的交易品种和流畅的用户体验,赢得了全球数百万用户的信赖。它不仅提供现货、合约、期权等多种交易模式,还积极探索DeFi、NFT等新兴领域,致力于为用户提供一站式的数字资产服务。欧易官网登录入口,是您开启数字资产之旅的关键一步,在这…

    2025年12月8日
    000
  • 币圈四大交易所下载(全球虚拟币交易平台前四名APP推荐)

    想要踏入 波澜壮阔的数字货币世界,却苦于找不到安全可靠的入口?别担心,我们为你精挑细选了币圈公认的四大交易所,它们如同数字世界的灯塔,指引着无数投资者前行。你是否好奇这四大交易所究竟是哪几家?它们又各自有什么特点?又该如何下载和使用它们的APP?别着急,接下来,我们将为你一一揭晓,助你轻松开启你的数…

    2025年12月8日 好文分享
    000
  • LayerEdge(EDGEN币)是什么?2025年、2026 – 2030年价格预测

    随着区块链技术的发展,对于更快速、更安全且更具成本效益的验证方法的需求变得日益重要。layeredge 诞生于这样的背景,作为一项前景光明的解决方案,它利用比特币绝佳的安全性,透过零知识证明来验证复杂的计算。透过解决区块链可扩展性和信任方面的一些重大挑战,layeredge 提供了一种崭新的去中心化…

    2025年12月8日
    000
  • OKX2025最新APP注册攻略 欧意官网账户开通步骤详解

    OKX,作为全球领先的数字资产交易平台,致力于为用户提供安全、稳定、便捷的加密货币交易服务。其不断迭代的APP和网站,旨在优化用户体验,简化交易流程。 2025年,OKX在用户界面、安全措施和交易功能上都进行了显著升级,力求打造更加完善的数字资产交易生态系统。为了帮助新用户快速上手,本文将详细介绍O…

    2025年12月8日
    000
  • oe欧亿官方APP下载 oe欧亿官方最新版APP怎么安装注册教程

    你是否正苦苦寻找 oe欧亿官方APP 的安全下载渠道?是否对繁琐的安装过程感到头疼?又是否渴望快速掌握注册技巧,立即体验 oe欧亿 带来的便捷服务?别担心,本文将为你提供一份详尽的 oe欧亿官方最新版APP 下载、安装、注册教程,让你轻松上手,畅享 oe欧亿 的精彩世界。我们将一步一步地引导你,确保…

    2025年12月8日
    000
  • 2025年OKX官网注册步骤 欧意APP下载及账号开通全攻略

    2025年OKX官网注册步骤包括访问官网、进入注册页面、选择注册方式、填写邀请码(可选)、阅读协议、完成验证、激活账号及设置二次验证;欧意APP下载可通过官网、应用商店或扫码进行;账号开通需完成身份验证、填写信息、等待审核并最终完成验证。 在%ignore_a_2%的世界里,OKX(原名欧易)无疑是…

    2025年12月8日
    000
  • ok交易所app OKX欧意官方APP 2025注册

    OKX欧意官方APP完成2025年注册。1. 下载OKX欧意官方APP,通过官网、二维码或应用商店获取;2. 注册账户,选择手机号或邮箱并填写相关信息;3. 完成KYC实名认证,提交身份信息并等待审核;4. 设置双重验证、资金密码等安全措施以保障账户安全;5. 开始交易数字资产,开启投资之旅。请务必…

    2025年12月8日
    000
  • 2025大门Gate.io交易平台官方版APP注册交易入口

    Gate.io,作为一家历史悠久、口碑良好的加密货币交易平台,无疑是众多投资者的理想之选。现在,让我们一起打开2025年的Gate.io大门,通过官方版APP,轻松注册并开启你的交易之旅。别担心,即使你是新手小白,也能跟着我们的详细教程,一步步掌握注册和交易的技巧,拥抱数字财富。 Gate.io官方…

    2025年12月8日
    000
  • okx怎么注册官网app 2025欧意OK官网注册教程

    如何下载并安装OKX官方App?请通过官方链接下载以确保安全。1、点击文章提供的官方下载链接访问页面;2、下载安装包(.apk文件)并等待完成;3、安卓设备用户开启“允许安装未知来源应用”后安装;4、打开App进行注册或登录;5、提交身份证明完成KYC验证。注意事项包括保持网络稳定、检查存储空间及及…

    2025年12月8日
    000
  • 2025 欧易OK官网注册 OK交易所下载注册地址

    如何下载安装欧意OK交易所APP?1、获取官方下载链接,点击链接下载安装包;2、下载完成后找到安装包文件;3、允许安装未知来源应用;4、继续安装并等待完成;5、打开APP进行注册或登录。欧意OK交易所作为全球领先的数字资产交易平台,为用户提供便捷的官方APP下载服务,确保用户通过官方渠道安全下载和安…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信