#62632024年10月24日作者 yashvi20264 个回答
GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? 铬可复制演示链接 https://codepen.io/Harshsne/pen/xxoOyXO描述一下那个虫子 如何复现这个漏洞?使用 RTE 添加词语链接,添加链接组件现在在链接组件后输入一个不留空格的词,再次选择该词,添加链接。添加后,点击文本框外。 预期的行为是什么? 第二个新增链接应包裹在第一个链接和文本上。 目前的行为是什么? 新增了两链接组件。 代码 var url = window.prompt('Enter the URL to link to:'); rte.insertHTML(<a class="link" href=$...
sirbeagle
点燃——唯一的坏处是我们可能永远不知道最终的修复结果。 @artf - 我觉得我们可以结束这个问题了。
sirbeagle
我已经玩了不少,能在@yashvi2026提供的Codepen上重现出这个错误。我大多数情况下的繁殖步骤非常相似: 在文本框中输入两个单词,中间有许多空格。 双击单词或用鼠标手动选择单词,选中第一个单词 使用自定义RTE添加链接 跳出框框点击 在现有文本中的链接后双击返回 在链接后高亮单词,并用鼠标将高亮扩展为包含第一个链接的首字母 使用 RTE 添加另一个链接 点击文本框外 然而,我在开发环境中无法复现这种效果。经过多次反复试验,我发现Codepen使用的是GrapesJ...
yashvi2026
是的,升级到最新版本后,这个问题就不出现了。
#62602024年10月24日作者 hr12012 个回答
GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? Microsoft Edge 130.0.2849.46可复制演示链接 https://jsfiddle.net/uwybfd98/描述一下那个虫子 如何复现这个漏洞?选择旋转木马组件点击图片右上角或左下角的空格并选择 div; 克隆二次 预期的行为是什么? 克隆只触发一次 目前的行为是什么? 它递归,导致卡壳 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面:  寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somethin...
#62502024年10月23日作者 maxming23332 个回答
GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? Chrome 129.0.6668.101可复制演示链接 https://grapesjs.com/演示描述一下那个虫子 如何复现这个漏洞? 开放 https://grapesjs.com/演示 在 DevTools 中运行这个脚本: 预期的行为是什么? 成功无错误地复制 目前的行为是什么? 成功复制但有错误: <img width=“472” alt=“image” src=“https://github.com/user-attachments/assets/14309772-7e8e-4ce2-ba14-7aefbed8614f”> --...
maxming2333
除了上述方法,还有其他复制页面的方法吗?
GJS Helper
你在克隆GrapesJS页面的主组件并将其添加到新页面时遇到的TypeError: Converting circular structure to JSON,是与组件序列化存储相关的常见问题GrapesJS。这是因为实时GrapesJS Component模型,尤其是在渲染后带有关联的DOM元素(el)后,包含复杂的内部引用,形成循环依赖。当GrapesJS尝试序列化此类组件(例如将其添加到新页面以实现持久化)时,JSON.stringify因这些循环结构而失败。 根本原...
#62112024年10月11日作者 jlafosse4 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Firefox 131.0.2 可复制演示链接 https://grapesjs.com/demo-newsletter-editor.html 描述一下那个虫子 如何复现这个漏洞?进入 grapesjs 演示,然后导入以下 html:打开浏览器控制台。快速多次点击图片。 预期的行为是什么? 应该能正常工作,没有错误。 目前的行为是什么? 这会导致 FireFox 出现递归错误。Chrome 似乎不受此问题影响。我正在 OSX 13.6.9 上测试,并附上了一段简短的屏幕录制。 我怀疑问题来自以下函数: https://github.com...
artf
嘿,@jlafosse谢谢你的报告。 我不认为最新版本会有这个问题: <img width=“123” alt=“截图 2024-10-21 19 00 04” src=“https://github.com/user-attachments/assets/ff074a31-cd19-4547-bb27-596c92e16d64”> 你能再试着再检查一次吗?
#62022024年10月9日作者 klipto-inc2 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 129 可复制演示链接 https://grapesjs.com/演示 描述一下那个虫子 const newEditor = grapesjs.init({ fromElement: true, // 允许HTML中的组件 容器:“#editor”, 画布:{ 剧本:[ “https://cdn.jsdelivr.net/npm/[email protected]/dist/preline.min.js”, ], }, 高度:“100VH”, 插件:[ gjsPreset网页, GjsBlockBasic, gjsForms, pluginTool...
artf
@klipto-inc,请制作带有正确且可复现的实时演示的错误报告
GJS Helper
你遇到的 Preline.js 在 GrapesJS 画布上无法工作的问题,尽管它通过 canvas.scripts包含,是依赖 DOMContentLoaded 初始化的 UI 库常见的时序问题。 根本原因 许多JavaScript UI框架和库,包括Preline.js,设计为在浏览器DOMContentLoaded事件触发时自动初始化其组件。该事件表示初始HTML文档已被完全加载和解析。 当你在GrapesJS中包含canvas.scripts脚本时,脚本确实会加载到...
#61522024年9月18日作者 stpp24 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 任何 可复制演示链接 https://grapesjs.com/演示 描述一下那个虫子 如何复现这个漏洞?添加带有HTML + CSS的自定义代码组件删除自定义代码组件。 预期的行为是什么? 所有代码都应被删除,包括CSS 目前的行为是什么? 自定义CSS不会被移除,但其他部分已经被移除。 [gjs.webm](https://github.com/user-attachments/assets/3fbd9a6d-ad0e-4fc6-add8-7cf31ae9293c) 行为准则 [X] 我同意遵守本项目的行为准则
artf
这与核心无关,应在[插件](https://github.com/GrapesJS/components-custom-code)层面处理。请在那里发布问题,我们会尽力找出合适的方法。
mosh-tudor
@stpp2 这其实不算是个bug;它更像是一种功能。:) 试试用“clearStyles”: https://github.com/GrapesJS/grapesjs/blob/d48e1e34a9fa363dcb83fdcca53a89563db17063/packages/core/src/editor/config/config.ts#L260-L272
stpp2
是的,我这里已经启用了“clearStyles”,但很多情况下效果不好。 无论如何,我预计“自定义代码”组件应该有一定的“容器化”,这样移除后文档里不会留下任何东西。
#61432024年9月10日作者 rhoenerSBS2 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v128 可复制演示链接 https://jsfiddle.net/fjyk6n4a/2/ 描述一下那个虫子 你好,@artf, 我目前正在尝试将一个组件包裹在一个截面组件中,如果它还没有被包裹的话。我正在连接 component:mount 事件,并将新增组件替换为 section(该组件的子节点是新增的)。 我的代码大致是这样的: 我遇到的问题是UndoManager的栈和实际情况没有完全对齐。添加和封包后,栈有三个条目:移除原始组件、添加部分和添加原始组件。点击撤销时,该部分被移除,原始组件保留。但它有bug,因为它无法...
jasonvijayy
你好,@artf, [可复制链接](https://codepen.io/Logeshwaran-codepen/pen/raLJpYb) 我用'component.replaceWith()'和UndoManager一起运行时也遇到崩溃。 这只发生在编辑器生命周期事件中触发“replaceWith()” (例如 'change:status', 'component:selected', 'component: deselect') 在撤销时,GrapesJS 尝试恢复旧...
GJS Helper
谢谢你举报,@rhoenerSBS。 关于BUG/[问题]:如何在添加/挂载时正确包装组件?的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('some...
#61422024年9月10日作者 rhoenerSBS2 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v128 可复制演示链接 https://app.grapesjs.com/工作室 描述一下那个虫子 添加页面后,通过撤销删除,再用重做重新添加,页面却无法正常工作。图层管理器在选择页面时不会更新。它也没有移除前的内容,似乎也没有实体,因为无法向该页面添加新组件。我在本地开发中注意到了这种情况,但由于 grapesjs 的 Studio 版本也出现了,我提交了工作室版本的链接以重现此问题。 如何复现这个漏洞?打开 GrapesJs 工作室示例添加页面点击撤销 - >页面从列表中移除点击重做 ->页面再次添加点击重做添加的页面查...
GJS Helper
这确实是GrapesJS的撤销/重做机制中的一个bug,特别是在处理页面添加和删除时。你描述的行为符合“重做”操作后页面内部状态恢复不完整的情况。 根本原因 当页面在GrapesJS中添加时,会创建一个Page模型,关键是会关联一个根 Component(通常是带有 tagName: 'body'的 wrapper),以保存页面的所有内容。当你“撤销”页面添加时,Page模型及其关联的根组件会被移除或销毁。错误发生在“重做”操作期间:虽然Page模型本身被重新添加到编辑者的...
#61222024年9月4日作者 mohamedsalem4013 个回答
[x] 修正 StyleManager 中的排序器使用情况(包含排序属性层的回归) [x] 基于“Components.canMove”的重构分选器 [x] 更新“canMove”,检查将主符号丢弃在其自身实例内。
mohamedsalem401
其理念是重构分拣器以提升可维护性和可读性。我们可以实施以下改动:让“Sorter”类依赖抽象树结构,而不是依赖“Component”或“Layers”等具体实现,让“Sorter”类使用更通用、抽象的树结构。这样会让它更灵活、更易重复使用。将代码拆分为多个较小的类,每个类负责单一职责'ComponentManager.canMove': 使用 'ComponentManager.canMove' 方法来判断是否可以移动某个“组件”。这样可以避免代码重复,并确保应用不同部分的...
GJS Helper
此次修复和重构解决了GrapesJSSorter.ts和组件移动逻辑中的多个关键领域,解决了样式管理器中的回归问题,并提升了整体拖放体验,尤其是可重用组件(符号)方面。 1.修复StyleManager中排序器的使用(带有排序属性层的回归) 问题:引入了回归,StyleManager通过拖放排序属性层(例如多个box-shadow或text-shadow值)的能力被破坏。这通常发生在负责拖放重排序的Sorter组件配置错误或未正确集成样式管理器属性层的动态DOM结构时。 解...
#61022024年8月31日作者 Alababdiy3 个回答
GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? 铬91V可复制演示链接 https://jsfiddle.net/8tsj5vpb/描述一下那个虫子 我在 GrapesJS 中遇到了一个问题,就是在重新加载编辑器后,自定义组件定义的特征没有显示出来。刚添加组件时,特征是正常工作的,但在重新加载编辑器(例如刷新页面)后,特征不再出现在特征面板中。 繁殖步骤:使用编辑器定义自定义组件类型。DomComponents.addType,包含默认功能部分的特征。将自定义组件添加到画布中。重新加载编辑器(例如,刷新页面或重新初始化编辑器)。在编辑器中选择自定义组件。 预期行为: 自定义组件定义的特征应在...
mohamedsalem401
@Alababdiy 我无法通过提供的链接重现问题。 不过,问题似乎在于 GrapesJS 不允许在组件初始化后添加或定义它。
mohamedsalem401
嘿,@Alababdiy, 我没能重现你在JSFiddle中描述的问题。
GJS Helper
你遇到了一个常见问题,就是GrapesJS在重新加载编辑器后如何持续存在并重新识别自定义组件。自定义组件的特性会消失,因为GrapesJS没有正确地将加载的组件与其自定义类型定义关联。 根本原因 自定义特征在重新加载后不显示的主要原因是你的自定义组件定义model.defaults中缺少type属性。虽然你的isComponent函数帮助GrapesJS基于DOM结构初步识别组件,但GrapesJS大量依赖type属性(该属性在HTML元素中序列化为data-gjs-typ...