PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

GrapesJS 问题

已收录 3,464 个 GitHub 问题 — 370 个已解决 · 90 个待解决 搜索、筛选并探索经过实战检验的答案。

找到 30 个问题

🔍 undo-manager
#56412024年1月24日作者 yashvi20262 个回答
0 个反应

Undomanager.remove() 不工作

GrapesJS版本[X] 我确认使用最新版本GrapesJS你用的是什么浏览器? Chrome v91可复制演示链接 https://codepen.io/Harshsne/pen/WNgZzPE描述一下那个虫子 如何复现这个漏洞?将图片附加到画布并关闭图片模态。(这样该组件就会从追踪中移除,因为我已经从UndoManager堆栈中移除了该组件) ' editor.on('asset:close', () => { console.log(“接近”) const selected = editor.getSelected(); 如果 (selected & & selected.is('image'))) { editor.Un...

artf

这里的问题不在于“Undomanager.remove”,而是追踪了什么。 当你调整图像大小时,你不是在编辑“组件”本身,而是在编辑它的“CssRule”对象,所以它没有按预期工作。 我建议你干脆跳过那些你不想跟踪的操作的撤销管理器 “''js 编辑。UndoManager.skip(() => { // .... }); ```

GJS Helper

谢谢你举报,@yashvi2026。 关于Undomanager.remove()不起作用的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somet...

#56322024年1月20日作者 Harshsne262 个回答
0 个反应

在撤销管理器中添加更改

GrapesJS版本 [X] 我确认使用最新版本GrapesJS 你用的是什么浏览器? Chrome v91 可复制演示链接 https://codepen.io/dhanadsp1120/pen/ExrRvOB 描述一下那个虫子 如何重现这个bug?通过调用 um.stop() 禁用撤销管理器。对内容进行修改。使用 um.start() 重新启用撤销管理器。 预期的行为是什么? 当撤销管理器恢复时,暂停后所做的任何修改应被视为一次更改。这确保点击“撤销”会将所有修改恢复到撤销管理器中断前的状态。 目前的行为是什么? 撤销管理器停止后所做的更改在恢复后不会被包含在内。选择撤销选项后,这些更改会持续存在,不会如预期回滚。 另外我也尝...

artf

当撤销管理器恢复时,暂停后所做的任何修改应视为一次更改。这确保点击“撤销”会将所有更改恢复到撤销管理器中断前的状态。 抱歉,这不是UndoManager的启动/停止方式。禁用后,所有更改都会直接跳过UndoStack。 你说的是一个程序化的变更组合,确实很有趣,但目前还不支持,所以我不认为这是个bug。 我建议在[路线图](https://github.com/GrapesJS/grapesjs/discussions/5291)中提出这个建议,如果更多人需要,我们可以考虑...

GJS Helper

你遇到的问题是 GrapesJS UndoManager的预期行为。当调用 um.stop() 时,UndoManager会停止监听编辑者的更改。因此,在此期间所做的任何修改都不会被记录在历史中。当 um.start() 被调用时,它会从那点开始继续追踪,完全忽略暂停期间发生的更改。你的目标是将 um.stop() 到 um.start() 之间所有的更改都当作一个原子级的不可执行操作来实现。这可以通过手动在UndoManager的历史中添加自定义撤销步骤来实现,该步骤捕捉...

#56312024年1月19日作者 Harshsne262 个回答
0 个反应

撤销管理器 add () 无法如预期工作

GrapesJS版本 [X] 我确认使用最新版本GrapesJS 你用的是什么浏览器? Chrome v91 可复制演示链接 -- 描述一下那个虫子 如何复现这个漏洞? 我想在undomanager堆栈中添加一个更改。 var components = editor.Components;editor.UndoManager.add(components.getComponents().models); 预期的行为是什么? 用um.add()添加的更改应该被添加......当我点击撤销和重做时,这个更改也应该显示出来。 目前的行为是什么? 该变更不会被添加。 行为准则 [X] 我同意遵守本项目的行为准则

artf

@Harshsne26你需要提供一个可复现的漏洞演示

GJS Helper

你遇到的 editor.UndoManager.add() 不按预期工作的问题,源于对方法预期用途及其预期参数类型的误解。GrapesJS UndoManager 旨在跟踪编辑器整体状态的变化,而非直接跟踪单个模型集合。 根本原因 参数类型错误:editor.UndoManager.add()方法期望以State对象作为其参数。State对象是编辑器内容的全面快照,通常包含诸如html、css、components(序列化的JSON字符串或对象)、styles、pages和...

#55302023年11月25日作者 Harshsne261 个回答
0 个反应

撤销管理器的开始和停止功能没有达到预期效果

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v91 可复制演示链接 https://codepen.io/dhanadsp1120/pen/ExrRvOB 描述一下那个虫子 如何复现这个漏洞?通过调用 um.stop() 禁用撤销管理器。对内容进行修改。使用 um.start() 重新启用撤销管理器。 预期的行为是什么? 按下Ctrl+Z后,系统应恢复到停止撤销管理器前的状态,只显示重新启用后所做的更改。 目前的行为是什么? 按Ctrl+Z会跳转到前一步,表示所有更改都在跟踪,尽管撤销管理器暂时停止。 ![撤销管理器](https://github.com/Grapes...

GJS Helper

你描述的 GrapesJS 撤销管理器(um.stop() 和 um.start())的问题是已知的行为,即尽管 um.stop() 方法将内部 enabled 标志设置为 false,但并不能始终阻止所有内部 GrapesJS 操作将命令推送到撤销栈。这导致在管理器理应停止记录时,仍然被记录在历史中。 根本原因 GrapesJS UndoManager 有一个 add 方法,可以在推送命令到历史栈前检查 enabled 标志。 um.stop() 方法设置 this.en...

#53252023年8月21日作者 bohwaz1 个回答
0 个反应

撤销(Ctrl+Z)并不是取消浏览器键盘快捷键

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 维瓦尔第 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?执行动作后按Ctrl+Z,以撤销动作被反转,但我的浏览器也会重新打开最后关闭的标签页 预期的行为是什么? 阻止浏览器执行默认的按键绑定。 目前的行为是什么? Ctrl+Z 事件传播在 JS 中不会被停止,因此浏览器仍然执行指定的快捷键。 行为准则 [X] 我同意遵守本项目的行为准则

GJS Helper

你遇到的 Ctrl+Z 同时触发撤销和浏览器“重新打开最后关闭标签页”快捷方式GrapesJS问题,是因为 Ctrl+Z 的keydown事件在 GrapesJS内没有被阻止默认操作。虽然 GrapesJS 内部处理撤销命令,但事件可以被加载到浏览器,浏览器会执行自己的默认快捷方式。 要解决这个问题,你需要明确阻止GrapesJS激活时Ctrl+Z键组合的默认浏览器操作。实现这一点最有力的方法是利用GrapesJS的Keymaps API覆盖或增强默认undo键映射行为。...

#49722023年3月12日作者 FaisalShaikhHA1 个回答
0 个反应

复选框特性在撤销/重做操作中未被勾选或取消勾选。

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 版本 110.0.5481.177(官方构建)(arm64) 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 目前的行为是什么? 复选框特性未勾选或取消,撤销/重做时(我这边的特征值会更新)。 可在 Grapesjs 网页[演示](https://grapesjs.com/demo.html)上复现。 预期的行为是什么? 复选框特性应该在撤销/重做时被勾选或取消。 https://user-images.githubusercontent.com/102785785/224533486-045...

GJSBlock

谢谢你举报,@FaisalShaikhHA。 复选框特性在撤销/重做操作中未被勾选或取消勾选的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这...

#49472023年2月27日作者 FaisalShaikhHA4 个回答
2 个反应

Undo manager not working properly on undoing a remove action

GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? Chrome - 版本 110.0.5481.100(官方构建)(arm64)可复制演示链接 https://codepen.io/faisal-praella/pen/ExeNwxJ描述一下那个虫子我添加了一个自定义的columns组件,带有编号特征名称columns,用于添加或移除子组件列。当我用该特性添加新列并撤销更改时,效果正常,但当我移除列并撤销更改时,会多加一列。这可能是因为当 Grapesjs 撤销移除更改时,会附加已移除的列并还原列特征,但列特征的更改触发了 this.listenTo(this, "change:columns...

artf

是的,撤销会触发“change:columns”,在你的情况下,你可以尝试用“editor”封装你的“updateColumns”更改。UndoManager.skip'。 “''js updateColumns() { 编辑。UndoManager.skip(() => { 你的行动 }) } ```

artf

好的,那我就关闭这个,请打开一个与复选框特性相关的新漏洞问题。

FaisalShaikhHA

谢谢你,@artf它有效,为了解决这个问题,我之前通过听“撤销命令”和“运行事件”来切换特质更改监听器,但这样感觉更干净了。 复选框特性在撤销/重做时未被勾选或取消勾选(我这边的特征值会更新)。可在Grapesjs网页[demo](https://grapesjs.com/demo.html)上复现。这里也需要帮助,再次感谢。 https://user-images.githubusercontent.com/102785785/224402423-fd04268a-896...

#47632022年12月1日作者 quentin-bettoum2 个回答
0 个反应

_undoexc status open

GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? Firefox 106可复制演示链接 https://grapesjs.com/demo.html描述一下那个虫子 你好, 当我从 0.19.5 升级到 0.20.1 时,我注意到用 editor.getProjectData() 得到的页面 JSON 比以前明显更重。 区别在于,在0.20.1中,JSON中的每个组件都包含以下代码: 我猜问题可能是从 [组件被转换成类](https://github.com/artf/grapesjs/blame/143414408e0b6f37645fc07714f142280d88961d/src/dom...

artf

哦,是的,那应该被删除,谢谢。

GJSBlock

谢谢你举报,@quentin-bettoum。 关于_undoexc状态开放的好问题。ProseMirror 推荐的方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somethin...

#46992022年10月31日作者 DhanaDSP11202 个回答
0 个反应

Undo not working properly on InsertHTML in text block

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 铬V107 可复制演示链接 https://jsfiddle.net/4vacxuw2/2/ 描述一下那个虫子 我加了一个自定义工具栏,通过rte.insertHTML选项在当前位置插入某个值,效果很好。但当尝试撤销(ctrl+z)时,新插入的HTML块没有被移除 ![grapesjs 在 insertHTML 上撤销问题 ](https://user-images.githubusercontent.com/54067384/198582651-26c3613a-003d-4907-a761-746d75f8880a.gif) 行为准则...

artf

你好@DhanaDSP1120是的,不幸的是,'rte.insertHTML' 会用自定义插入,所以这很正常。如果你需要保留原生的编辑撤销栈,可以使用这个 API “''js rte.exec('insertHTML', '<span ...') ```

GJSBlock

谢谢你举报,@DhanaDSP1120。 在文本块中插入HTML时撤销不正常的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队更快识...

#46912022年10月26日作者 DhanaDSP11202 个回答
1 个反应

撤销管理器——不正常工作,当我们尝试应用和撤销背景色时,会点击出块外,然后移除的颜色才会出现

撤销管理器——不正常工作,当我们尝试应用和撤销背景色时,会点击出块外,然后移除的颜色才会出现 这个问题在版本0.19.4到最新版本中都会出现,以下版本运行正常 复制链接 工作版本: https://jsfiddle.net/0vpbLmxy/ 无法正常工作的版本: https://jsfiddle.net/q3cgwa5m/1/ 演示: ![grapesjs 撤销问题](https://user-images.githubusercontent.com/54067384/197989568-5b29f18e-cf93-4cd6-a6ad-bec0ddd283ad.gif) Originally由@DhanaDSP1120在 htt...

artf

看起来是颜色选择器本身的问题,我会试着在下一个版本修复。 附注:对于错误报告,你不需要先创建讨论,你可以按照模板直接打开问题。这也能避免不必要的讨论帖。

GJSBlock

谢谢你举报,@DhanaDSP1120。 感谢你分享关于撤销管理器——无法正常工作,当我们尝试应用和撤销背景色后点击出块时,移除的颜色才会出现。为了帮助团队调查并优先排序: 请提供: 一个最小可复现的例子(CodeSandbox/JSFiddle) 你的GrapesJS版本号 浏览器和操作系统信息 浏览器控制台的任何错误信息 重现问题的步骤 最有帮助的是什么: 简约代码示例(不是你整个项目) 屏幕录制或截图显示问题 明确区分预期行为与实际行为 你正在使用的GrapesJS配...

浏览所有主题