问题 #5312💬 已回答提出于 2023年8月17日作者 srinivas9770 个反应

列表的富文本编辑器缩进操作的问题

快速解答作者 artf

不幸的是,由于默认实现依赖于 [deprecated execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand),导致太多边缘情况难以处理,已经不值得再花时间去处理了。 我建议只用它来处理基本格式(例如加粗、斜体、下划线等),对于更复杂的元素,我强烈建议创建[自定义组件](https://grapesjs.com/docs/modules/Components.html)或替换[内置富文本编辑器](https://grapesjs.com/docs/guides/Replace-Rich-Text-Editor.html)。

阅读下方完整回答 ↓

问题

葡萄JS版本

  • 我确认使用最新版本的GrapesJS

你用的是什么浏览器?

Chrome V115

可复制演示链接

https://jsfiddle.net/srinivas977/ahgLxv6e/10/

描述一下那个虫子

如何复现这个漏洞?

  1. 在提供的JSFiddle中,包含一对文本行和选择列表。接着,添加一个子列表,然后添加子列表。之后,点击选定元素外的选项会使子列表中的某个物品消失。

这个现象也在这个视频链接中看到(从视频第30秒开始注意):

https://github.com/GrapesJS/grapesjs/assets/49796104/59de9aa5-5f3f-43ae-9ed1-358b86ac8b27

预期的行为是什么? 1)子列表中的物品不得消失。 2)选择缩进动作后,默认会自动分配与父列表相同的类型(有序/无序列表),导致HTML无效。示例:元素'ol'不被允许作为元素'ol'的子节点

目前的行为是什么?

1)子列表中的项目正在消失 2)应验证HTML并根据父标签分配相应的(有序/无序列表标签)......

行为准则

  • 我同意遵守本项目的行为准则

回答(2)

artf2023年8月23日

不幸的是,由于默认实现依赖于 [deprecated execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand),导致太多边缘情况难以处理,已经不值得再花时间去处理了。 我建议只用它来处理基本格式(例如加粗、斜体、下划线等),对于更复杂的元素,我强烈建议创建[自定义组件](https://grapesjs.com/docs/modules/Components.html)或替换[内置富文本编辑器](https://grapesjs.com/docs/guides/Replace-Ric...

ClaudeCode2026年5月17日

谢谢你举报,@srinivas977。 关于列表富文本编辑器缩进操作的问题的好建议!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:*”事件进行细致跟踪 构建一个插件,扩展编辑器并具备此功能 正式宣布: 如果此功能能惠及更多用户,考虑在 GrapesJS 仓库上...

相关问答

通过相似的问题讨论继续研究。

问题 #6416

HTMLENTITIES >破坏远程存储——显示未定义

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Firefox 和 Chrome 可复制演示链接 我无法做远程存储的演示 描述一下那个虫子 导入任何标签旁边带有“&gt;”的标签&gt; 示例:'<a href=“#”&gt;&gt;<...

2 个回答更新于 2025年3月5日

问题 #4385

Index.d.ts说执行命令应该返回 void,但文档说可以使用它们的返回值

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 任何 可复制演示链接 https://grapesjs.com/docs/modules/Commands.html#stateful-commands 描述一下那个虫子 如何复现这个漏洞? 在T...

2 个回答更新于 2022年6月18日

问题 #3216

功能:通过资产管理器添加 referrerPolicy 以加载图片

你想给GrapesJS添加什么? 我正在尝试通过资产管理器为图片加载添加“Referer”头。 详细描述你的功能需求详细 我正在开发一个托管在AWS上的页面构建器。为了防止别人热链接我的图片,我实现了AWS WAF,限制图片加载到referer域(我自己的域名)。 当用“.sr...

4 个回答更新于 2021年1月7日

问题 #5607

无法扩展之前空过的图层

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v120.0.6099.199 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?将第1列方块拖到画布上将任何其他块拖...

2 个回答更新于 2024年1月11日

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。