#56322024年1月20日作者 Harshsne262 个回答
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 个回答
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和...
#56302024年1月18日作者 kla-ko2 个回答
GrapesJS 版本 [x] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome 版本 120.0.6099.225 可复制演示链接 https://jsfiddle.net/wattnu/y8L6whun/ 描述一下那个虫子 如何复现这个漏洞?Goto jsfiddle运行代码在画布上,选择蓝色的div组件尝试拖动位于底部中央的调节把手调整大小手柄不会随着鼠标移动在 js 代码中,查看顶部的插件实现。在那里,考虑以下部分:注释 onStart 配置 --> '// onStart: (event, opt) => { console.log('resize started') } ,'重新运行小提琴。现在...
GJS Helper
你遇到的问题是,配置onStart回调以resizable属性,导致组件无法调整大小,是因为GrapesJS(以及通常底层的拖拽/缩放库)处理自定义事件回调的方式。当定义了onStart回调时,如果你想继续默认的调整大小操作,通常会显式返回true。如果回调返回undefined(这是没有 return 语句时的隐式返回值)或 false,则调整大小操作实际上被取消或阻止启动。 根本原因 GrapesJS 中的resizable功能依赖于一个内部机制,检查onStart回调...
#56212024年1月15日作者 ronaldohoch2 个回答
GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? Edge 最后版本可复制演示链接 https://grapesjs.com/演示描述一下那个虫子 如何复现这个漏洞?得到一个空元素加高值双边框。(20..30px...)将任意方块移动到其中。 预期的行为是什么? 占位符应放在元素中心。 目前的行为是什么? 占位符显示在元素顶部,木板内侧行为准则[X] 我同意遵守本项目的行为准则
ronaldohoch
https://github.com/GrapesJS/grapesjs/pull/5622
GJS Helper
你准确地识别出GrapesJS中一个视觉漏洞,涉及当元素有显著边界时,空元素占位符的位置。这种行为在GrapesJS演示中是可复现的,并影响拖拽操作中的用户体验。 根本原因 根本原因在于默认的 CSS 样式应用到GrapesJS占位符元素上,通常由类 .gjs-placeholder标识。默认情况下,GrapesJS 使用position: absolute; top: 0; left: 0; right: 0; bottom: 0;来定位占位符。这组属性使占位符填充其父元...
#56182024年1月15日作者 Ashwinvalento3 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Edge v120.0.2210.121 可复制演示链接 https://codepen.io/ashwinvalento/pen/jOJMPqx 描述一下那个虫子 如果我们设置了 config.parser.optionsHtml.allowScripts: true 并创建了一个包含脚本的组件,那么当我们用 grapesjs-preset-webpage 插件导入代码时,脚本标签会被重复。 如何复现这个漏洞? 在演示链接(https://codepen.io/ashwinvalento/pen/jOJMPqx)将“复制脚本块”放入画布。...
artf
直接将 JS 导入为组件从来不可能,所以它被视为一个新的组件。
Ashwinvalento
有没有办法识别现有组件的脚本并在导入时删除它们?我们无法移除所有脚本标签,因为需要保留手动添加的脚本。
GJS Helper
你遇到的脚本重复问题是,在多次导入HTML时,尤其是在 GrapesJS中,尤其是 config.parser.optionsHtml.allowScripts: true,是 GrapesJS 在 setHtml 操作中如何对合组件的已知行为。虽然 setHtml 设计用于替换画布内容,但脚本组件的对账逻辑可能并不总是正确识别和替换现有的相同脚本,导致它们被附加而非更新或移除。 根本原因 当 config.parser.optionsHtml.allowScripts 设...
#56132024年1月12日作者 SachinPuthiyoth1 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 没有 描述一下那个虫子 如何复现这个漏洞?根据 https://github.com/GrapesJS/grapesjs/blob/5c890449a52f526bc480d6dc649ff5e01ec59140/src/stylemanager/index.ts#L310 属性的类型 属性类型https://github.com/GrapesJS/grapesjs/blob/5c890449a52f526bc480d6dc649ff5e01ec59140/src/stylemanager/config/config.t...
GJS Helper
你准确指出了GrapesJS中的类型定义不一致。问题源于src/stylemanager/config/config.ts中StyleManagerConfig.sectors.properties声明的类型与其实际用法及预期类型不匹配,意图类型是PropertyTypes(Property对象数组),如 src/stylemanager/index.ts所示。 根本原因 StyleManagerConfig接口,特别是sectors性质,定义为SectorProps[]。...
#56072024年1月10日作者 Ju99ernaut2 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v120.0.6099.199 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?将第1列方块拖到画布上将任何其他块拖入单元格,例如文本选择单元打开图层面板 预期的行为是什么? 我们应该能够展开单元格,并通过图层选择单元格内的元素 <img width=“1438” alt=“截图 2024-01-10 下午5 42 36” src=“https://github.com/GrapesJS/grapesjs/assets/48953676/043150f3-9c7...
GJS Helper
这是GrapesJS中已知的一个漏洞,与图层面板(特别是Layer视图)对组件子集合变化的反应有关。问题出现在组件(如列或单元格)最初是空的,然后内容被拖入时。图层面板未能更新父组件的图层以显示展开/折叠的插入点,阻止访问其嵌套元素。 根本原因 GrapesJS中的Layer视图负责渲染图层面板中的每个项目,会监听其关联组件模型上的change:open和change:components事件,以决定是否渲染展开/折叠的插入点。然而,在Backbone.js(GrapesJ...
#55932024年1月3日作者 thigh4 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? MS Edge 120.0.2210.91 可复制演示链接 无 描述一下那个虫子 如何复现这个漏洞?更新至最新版本 grapesjs 建立一个多页项目注意当前层管理器的层级结构调用 pagemanager.select(pageId) 方法,针对当前选中的页面以外的其他页面图层管理器仍然反映上一页的层级结构,尽管页面管理器显示新页面当前为激活状态,画布正确渲染新选中的页面降级到 grapesjs v0.21.6,重复步骤3-5。每当选择不同页面时,图层管理器都会正确反映活跃页面的层级结构 预期的行为是什么? ...图层管理器应更新以反映活跃...
sunnynk19
你好,@thigh,看起来还是没用。你部署了最新的 npm 包吗?
artf
尚未出版,你可以在这里找到所有 https://github.com/GrapesJS/grapesjs/releases
#55842023年12月27日作者 vian0132 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v91 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞? 最近我必须将 grapesjs 0.14.62版本升级到最新版本(0.21.8)。在旧代码中,我们用“storage:end:load”来做一些操作,前提是所有组件都挂载到画布上。 但在当前版本中,它的工作方式已经不一样了。正如我在文档中看到的,“storage:end:load”现在会在存储加载请求完成后立即触发。有没有什么方法或其他事件能达到和之前相同的效果? 目前我只能在“storage:end:l...
artf
@vian013请只用可复现的演示链接打开bug问题,快速检查一下活动似乎正常运行
GJS Helper
从版本0.14.62到0.21.8,GrapesJS中storage:end:load事件行为的变化是有意为之,反映了更细致的事件系统。在新版本中,storage:end:load会在数据成功从存储管理器中检索时触发。这发生在组件解析、添加到编辑器模型树并随后渲染到画布之前,DOM.To 实现所有组件挂载到画布后才执行代码的预期行为,你应使用editor.on('load', ...)事件。### 根本原因与解释 storage:end:load事件的目的是表示存储加载过程...
#55832023年12月26日作者 ronaldohoch4 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Edge 最后版本 可复制演示链接 https://grapesjs.com/演示 描述一下那个虫子 如何复现这个漏洞?打开演示链接点击页眉 切换视图为手机或平板。尝试从头部移除背景。 预期的行为是什么? 那个编辑器把 background:none 的头部设置成了 目前的行为是什么? GrapesJS 继承自“桌面”版本,所以无法从移动端移除背景。 使...
artf
这不是bug,而是缺失的功能,我们需要用新的配置扩展栈类型,以实现“空”值。 我会尽量在下一个版本里加入。
artf
de 属性 Background 中的清除图标会完全移除所选设备的属性,使其再次继承桌面设置中的值。 正确图层行中的清除图标会重置栈值,将所选设备的属性设为默认值,移除背景,且不会继承桌面设置。在同一个清除图标中再次点击,该图层会完全移除。 我不确定这是否完全是我想的,但想法是让它按原样工作,但加入一个额外的逻辑,当我移除最后一层时,如果存在新的属性(例如“emptyValue”),我会应用。 这是一种可能的属性类型 “''js emptyValue?: string |(...
gustavohleal
我已经为栈类型插入了一个解。我打算做一个PR,但我想先问你一个问题。我添加的行为是: 图层行中的清除图标会重置堆栈值,将所选设备的属性设为默认值,移除背景,且不会继承桌面设置。在同一个清除图标中再次点击,该图层将完全移除。de 属性 背景中的 clear 图标会完全移除所选设备的属性,...