#44322022年7月9日作者 booellean2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 103.0.5060.66(官方构建)(64位)(同级:稳定版) 可复制演示链接 https://codesandbox.io/s/cranky-morning-fh5diz?file=/index.js 描述一下那个虫子 如何复现这个漏洞?将自定义块“图片”放入画面并调整大小。查看标记预览,你会看到CSS中有两个带有重复标记的ID(图片ID和img ID)“撤销”直到再次调整大小查看标记预览,现在 CSS 标记的 ID 与图片元素重复,阻止了进一步的样式 预期的行为是什么? “图片”元素依赖于 CSS 样式化的 'img' 标签,以确保尺寸正确显示...
artf
我不太确定具体发生了什么,但我建议切换到“styleable:change”事件,并将其选项传递给“setStyle”,比如说, “''js Editor.ON(“styleable:change”, (model, prop, opts) => { let component = editor.getSelected(); 如果(分量?.attributes.styleShared) { let child = component.attributes.component...
ClaudeCode
谢谢你举报,@booellean。 关于撤销管理器在自定义命令中创建重复CSS的问题非常好。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('som...
#40102021年12月11日作者 clonefunnels1 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome / Firefox 可复制演示链接 https://www.teamfunnels.net/login.php 演示演示 描述一下那个虫子 当我用这个代码让所有风格都变得重要时...... editor.on('styleable:change', (model, property) => { const value = model.getStyle()[property]; 如果 (value.indexOf('!important') === -1) { model.addStyle({ [property]: value + '...
ClaudeCode
谢谢你举报,@clonefunnels。 * 的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤:* 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队更快识别根本原因 在报告中包含 G...
#38792021年10月20日作者 mortimerz1 个回答
你好,@artf! 我按照我在关于[如何将选择器管理器事件/动作添加到撤销管理器栈](https://github.com/artf/grapesjs/discussions/3877)中提出的问题,设置了这个bug。 我认为我们想要的是撤销管理器能够跟踪选择器管理器中发生的事件/操作。 谢谢!
ClaudeCode
谢谢你举报,@mortimerz。 关于选择器管理器未被撤销管理器追踪的更新,这是个很好的问题。推荐的UndoManager方法是使用事件驱动的API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somet...
#36392021年7月23日作者 anatoli-dp4 个回答
我认为一个更详细的历史堆栈会带来很棒的功能。你可以拿到撤销堆栈,然后从中建立一个记录所有编辑的历史报告,但对我来说每次编辑具体是什么不太清楚(至少对我来说是这样,如果我遗漏了什么,请告诉我)。比如用公式化描述,比如组件[组件名称]在[页面位置或组件添加]处添加/删除/编辑,或者组件[组件]文本编辑......(请原谅我用这个笼统描述,因为连我自己都不知道该怎么表达)只是简单介绍一下每个堆栈中项目的撤销/重做历史。我目前只知道每个历史物品的ID,如果现在可行的话,我只是不知道该如何提取这些信息来创建一个历史侧边栏,除了ID,请给我一些线索,告诉我该注意什么 最新版本有替代方案吗?[ ] 是的(描述替代方案)[ x] 不 这是否与某个...
artf
嗨@anatoli-dp,如果能查看撤销历史会非常酷,我已经在考虑如何扩展UndoManager模块,通过插件实现这种功能(比如你可以用你喜欢的框架渲染UI)。 UndoManager 栈会在任何被监听的模型/集合(组件、CSS 规则等)发生变化时更新,新增一个包含动作信息的 UndoAction 对象。值得注意的是,一次更改可以生成多个撤销动作: “''js 这会为新组件生成一个撤销操作 以及另一个用于新CSS规则的任务 editor.addComponents(' <d...
anatoli-dp
是的,我知道如何访问这个栈,只是不知道怎么设计它,才能给最终用户更有意义的描述
artf
我只是不知道怎么给最终用户一个更有意义的描述 每个UndoAction(堆栈的每个实例)都会告诉你动作的“类型”(例如“添加”、“删除”、“重置”、“更改”)以及关于更新模型的详细信息(例如,Component、CssRule 等)。你可以尝试读取这些数据,但我更想的是如何让每个操作都易于识别。
#35772021年6月29日作者 alimajed933 个回答
我正在尝试禁用撤销按钮,因为没有撤销操作。 为此,我正在监听“change:changesCount”事件,并使用“editor?”。属性?撤销Manager?hasUndo()' 来设置撤销按钮的禁用状态。 'editor.on('change:changesCount', editor => setHasUndo(editor?.属性?撤销Manager?hasUndo()));' 除了以下这种情况,它对我来说还算是有效的:我在空白画布上创建新模板我拖放一个方块我撤销 问题是,虽然撤销现在应该被禁用,但它没有,因为“编辑器?”属性?撤销Manager?hasUndo()' 返回为真,和 'editor?' 一样。撤销Manag...
artf
所以队列中增加了一个额外的动作,而实际上不应该有,那就是我在画布上拖动一个方块时。 不太行,你能做一个可复现的演示吗?我不能复现?
no-response[bot]
由于我们请求原作者提供更多信息未获回应,本期已自动关闭。仅凭当前期刊中的信息,我们没有足够的信息采取行动。如果您有答案或找到我们需要的答案,请随时联系我们,以便我们进一步调查。
ClaudeCode
谢谢你举报,@alimajed93。 关于UndoManager hasUndo()方法在不应该返回时返回为真的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console....
#34372021年5月6日作者 RaresVlaiduc2 个回答
@artf,如果你问我,这很重要:) 版本:v0.17.3 你能重现演示中的bug吗?[x] 是的[ ] 不 预期的行为是什么? 如果我更改设备,然后按撤销再重做,我会回到最后一个设备类型。(例如:移动端 - >平板,撤销,重做) 描述一下那个虫子 如何繁殖:编辑器登场按移动模式按撤销键按重做键检查控制台 之后,撤销/重做功能就失效了。 你能附上截图、截屏或实时演示吗?[x] 是(附上)[ ] 不 
artf
谢谢@RaresVlaiduc我会在撤销管理器里阻止追踪设备更改
ClaudeCode
谢谢你举报,@RaresVlaiduc。 关于撤销/重做问题的好问题。推荐的UndoManager方法是使用事件驱动的API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed'...
#33942021年4月8日作者 alext27933 个回答
如何通过自定义富文本编辑器 CKeditor 向 UndoManager 添加撤销/重做事件?
Ju99ernaut
“UndoManager”通常会追踪组件模型的变化,所以如果你能以某种方式记录组件中rte的变更,可能会有效。我不太确定具体怎么操作,所以无法给出更详细的描述。无论如何,ckeditor 自带了撤销管理器,或者你也可以用它,你可能需要在配置里包含撤销/重做按钮
artf
是的,正如@Ju99ernaut已经提到的,所有主要的RTE编辑都实现了自己的撤销管理器。事实上,当启用RTE(内置或自定义)时,所有快捷方式都会被禁用,以避免干扰文本编辑(当你编辑文本并按CTRL+Z时,你期望能撤销已编辑的文本)。
ClaudeCode
谢谢你举报,@alext2793。 关于UndoManager添加的好问题。ProseMirror 推荐的方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something cha...
#32902021年2月25日作者 marcepoblet3 个回答
版本: v0.16.41 你能重现演示中的bug吗? [ ] 不 预期的行为是什么? 当我们撤销图片时,changesCount参数应重置为零 详细描述那个漏洞 步骤:添加图片删除图片撤销更改 我们应该看到 changesCount 参数应该被重置为零。 目前的行为是什么? changesCount参数是递增的,而不是0。 你能附上截图、截屏或实时演示吗?** [ ] 是的(附上了视频) https://user-images.githubusercontent.com/64096863/109162404-ee124680-7756-11eb-9668-b1909b913831.mp4
GayathriGuru
嗨!@marcepoblet你能分享一下你用来定义 changesCount 变量以实现递增的代码部分吗?
artf
我就结束这段,因为我看不出这个功能有什么实质性的好处
ClaudeCode
谢谢你举报,@marcepoblet。 撤销图像时,changesCount参数应重置为零的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有...
#32402021年1月18日作者 marcepoblet2 个回答
https://user-images.githubusercontent.com/64096863/104953457-35adf180-59a5-11eb-85bd-2f84ffa24d83.mp4 删除模板后,文本和按钮块的样式会丢失,需要多次撤销和重做。 问题是,从块中应用的样式在应用撤销和重做功能后会丢失。我附上了一个视频来展示这个问题。
artf
这个问题应该会在最新版本中得到修复,请正确遵循问题模板,并确保在提交错误前使用最新版本
ClaudeCode
谢谢你举报,@marcepoblet。 感谢你分享关于UndoManager:撤销和重做组合不正常,丢失了一些样式的报告。为了帮助团队调查并优先排序: 请提供: 一个最小可复现的例子(CodeSandbox/JSFiddle) 你的GrapesJS版本号 浏览器和操作系统信息 浏览器控制台的任何错误信息 重现问题的步骤 最有帮助的是什么: 简约代码示例(不是你整个项目) 屏幕录制或截图显示问题 明确区分预期行为与实际行为 你正在使用的GrapesJS配置 有了这些细节,维护...
#31612020年11月27日作者 ssmanoj-grapes4 个回答
在撤销前所选组件的集合  撤销后所选组件的集合  代码用新组件替换该组件 的演示视频。
artf
好吧,既然你无法制作一个可复现的演示,我得关闭这个......