#46032022年9月22日作者 Akira-Kuru2 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Firefox 105.0(64位)可复制演示链接 https://grapesjs.com/demo.html描述一下那个虫子 如何复现这个漏洞?在Firefox中打开演示页面(https://grapesjs.com/demo.html)。 预期的行为是什么? 工具栏没有放大到你看不到网站的程度。 目前的行为如何? 工具栏的放大幅度肯定比平时高出300%。 Google Chrome 示例:  寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somethi...
#46012022年9月21日作者 bit-ocean4 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬104 可复制演示链接 https://jsfiddle.net/aw8p0h9j/ 描述一下那个虫子 如何复现这个漏洞?打开 jsfiddle 链接。点击两个div之间,然后在任一div和背景之间点击。 预期的行为是什么? 在较早的 grapesjs 版本(0.17.26)中,更新会被触发,控制台记录点击,执行 update() 代码。 目前的行为是什么? 在 grapesjs 0.20.1 版本中,切换不同目标时更新不会触发,至少在 1 个目标之间是这样。组件无房产价值,2.组件价值相同,...... JS: “''js const edito...
ronaldohoch
和这里描述的一样,没问题:https://github.com/artf/grapesjs/issues/4350
artf
是的,但即使是自定义UI,如果值没变,更新也会被跳过,因为没必要。
bit-ocean
我粘贴的代码是用标准API,基本上是从文档里复制粘贴的。显然,更新的机制在不同版本之间已经发生了变化。 之前如果目标元素被更改,更新会被触发,我们可以运行代码在特定条件下重新渲染组件。@artf你现在会提出什么最佳替代策略?我应该添加自定义监听器来针对变更事件吗?你有什么建议的实现方式,才能确保更好地跟进Grapesjs的核心变更? 简而言之,当目标被更改时,我需要能够调用可调用的对象,同时获取并设置自定义类型输入的值。
#46002022年9月20日作者 Aventrue3 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 镀铬 可复制演示链接 没有 描述一下那个虫子  image.js: 行为准则 [X] 我同意遵守本项目的行为准则
collins-lagat
新闻稿中说有重大变更。试试看,看看问题是否会消失。我也遇到同样的错误,但还没试过修复方法。 https://github.com/artf/grapesjs/releases/tag/v0.20.1
artf
是的,正如发布说明中提到的,自定义组件注册必须从旧的遗留API切换。
ClaudeCode
谢谢你举报,@Aventrue。 从 0.19 更新到 0.20 后,出现“无法将只读属性 assign to read only”[object Object]' 的错误发生,这似乎是一个竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请...
#45922022年9月15日作者 harsh2011 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 104.0.5112.102 可复制演示链接 https://jsfiddle.net/harsh201/obng5cy2/ 描述一下那个虫子 如何复现这个漏洞?在文本块内拖拽“Textable Component”。尝试编辑可文本块内的文本。 预期的行为是什么? 当双击可文本组件时,光标应移动到可文本块,因为它正在扩展文本。 目前的行为是什么? 当双击可文本组件时,光标仍聚焦于父文本块,焦点不会切换到文本组件。 粗略浏览时,每当我们双击文本块时,“contenteditable”属性会变为true,允许用户编辑该文本块。同样的行为也适用于嵌套在文本...
ClaudeCode
谢谢你举报,@harsh201。 关于文本组件在文本块中丢弃后变成不可编辑的建议很棒!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:*”事件...
#45882022年9月14日作者 wunksert2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 狩猎 可复制演示链接 https://grapesjs.com/docs/api/editor.html#editor 描述一下那个虫子 如何复现这个漏洞?访问 https://grapesjs.com/docs/api/editor.html#editor在第2行和第33行点击“配置对象”。 或者访问此链接:https://github.com/artf/grapesjs/blob/master/src/editor/config/config.js 预期的行为是什么? 加载配置对象参考 目前的行为是什么? Github页面上的404 如果需要执行...
artf
谢谢@wunksert链接已经更新,下次发布时会修复
ClaudeCode
谢谢你举报,@wunksert。 关于API Docs配置对象链接坏了,这个问题很棒。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something ch...
#45802022年9月13日作者 Singwai2 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 任何可复制演示链接 任何描述一下那个虫子 如果有覆盖功能,启动POS也应该使用'MosePosFetcher'方法,对吧?开始 Pos  https://github.com/artf/grapesjs/blob/dev/src/utils/Resizer.js#L278-L281当前 Pos  => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(...
#45792022年9月13日作者 Singwai2 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 任何可复制演示链接 代码请见截图描述一下那个虫子 有什么因素阻止我们在onEnd回调中添加调整尺寸和EL吗?因为我们正在重复使用缩放实例(除非是 forceNew)。我希望在调整尺寸结束时能清理一下调整尺寸的状态启动 https://github.com/artf/grapesjs/blob/dev/src/utils/Resizer.js#L295  => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复...
#45772022年9月12日作者 joukhar2 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome最新可复制演示链接 没有演示描述一下那个虫子 我想阻止事件,但我做不到,我试过了 以及如何预防商店事件,请帮帮忙 “''js editor.off('asset:upload:error'); editor.on('asset:upload:error', function(e) { e.preventDefault(); console.log(e); }) ```行为准则[X] 我同意遵守本项目的行为准则
artf
如果你有问题可以用讨论区,问题只针对可复现的漏洞
ClaudeCode
谢谢你举报,@joukhar。 关于防止使用自定义插件发生事件的好问题。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')...
#45762022年9月12日作者 benryanwilliams4 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome 104.0.5112.101可复制演示链接 https://jsfiddle.net/7cLr0xt2/3/描述一下那个虫子 如何复现这个漏洞? 不知为何,我无法在上面链接的小提琴里重现这个bug,因为第34行“selectedComponent.components('<span liquid=”if contact.id“>jhbjhhgjj</span> <span liquid=”else“>qwewqeqwe</span>')''并不能替换组件的内部组件,所以我只能分享一个项目中发生的情况视频,步骤如下:双击“Hello Worl...
artf
RTE在编辑时依赖于DOM内容,所以如果你故意用类似的程序删除它 “''js onRender() { this.el.innerHTML = this.model.get(“displayedText”) }, ``` 编辑完成后,内部组件将被移除。
benryanwilliams
好的,谢谢@artf,这说得通。 然而,那些代码行,以及 必须在画布内渲染正确的选中状态(包括组件最初渲染时以及用户选择不同的“if”状态,从而改变“displayedText”): https://user-images.githubusercontent.com/67364267/189854125-9544d34b-2f71-4b0c-872e-dbdfb2232fd9.mov 你能想到用RTE编辑后保留内部组件的方法吗?也许我可以把这些内部组件存储在“条件文本”组件...
benryanwilliams
我还需要做更多测试,但看起来我通过在创建/编辑组件时保存内部组件,然后使用'rte:disable' 钩子,如下,解决了这个问题: 这看起来有点老套,如果你能想到更好的方法,请告诉我。
#45752022年9月10日作者 Aventrue3 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 这是一个编译错误 描述一下那个虫子 AssetManagerConfig 中缺少属性自定义。 如果我用未分类的葡萄,它能行,但我想用它来搭配类型。有没有解决这个问题的解决办法? 我会像这里描述的那样做:https://grapesjs.com/docs/modules/Assets.html#customization => { this.openGalleryDialog(道具); }, 接近:(道具)=> { this.dialog.closeAll(); }, };
ClaudeCode
谢谢你举报,@Aventrue。 AssetManagerConfig中缺少自定义的问题似乎是竞赛条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤:** 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于...