GrapesJS 问题

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

找到 183 个问题

🔍 documentation
#54082023年9月21日作者 quentin-bettoum3 个回答
0 个反应

Main.scss 在 0.21.6 中缺失

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Firefox 118 可复制演示链接 没有 描述一下那个虫子 你好, 我按照这里文档的指示为GrapesJS做了主题:https://grapesjs.com/docs/getting-started.html#theming 但在 0.21.6 版本中,已经无法在 SCSS 中“@import”grapesjs/src/styles/scss/main.scss“;因为该文件在 'node_modules/grapejs/' 文件夹中缺失行为准则 [X] 我同意遵守本项目的行为准则

joukhar

是的,'src'文件夹缺失了

artf

和 https://github.com/GrapesJS/grapesjs/issues/5392 一样的问题

ClaudeCode

谢谢你举报,@quentin-bettoum。 0.21.6 版本中缺少 main.scss 的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤:** 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)...

#53882023年9月16日作者 hannydevelop4 个回答
0 个反应

运行无头模式时,编辑器返回不同的 HTML

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? ChromeV117.0.5938.62 可复制演示链接 https://codesandbox.io/embed/quizzical-galileo-cqldjh?fontsize=14&hidenavigation=1&theme=dark 描述一下那个虫子 如何复现这个漏洞?使用商店管理器的商店页面尝试用无头模式取回他们 预期的行为是什么? 创建的HTML应与编辑器相同,包括自定义标签。 目前的行为是什么? 自定义标签和其他非默认标签如“input”会被转换成“div”。例如,以下是编辑者的正常行为: 不过,这里有无头模式的代码: 看看“输入”...

artf

你好,@hannydevelop你有自定义组件类型,但你没有在“grapesjs.init”上传递任何插件,这就是为什么默认的“div”应用了

hannydevelop

你好,@hannydevelop你有自定义组件类型,但你没有在“grapesjs.init”上传递任何插件,这就是为什么默认的“div”应用了 抱歉我又要重新打开这个,按正常方式添加插件会返回错误:

artf

@hannydevelop能给我看代码吗?

#53162023年8月17日作者 BenKhz3 个回答
0 个反应

编辑者未订阅选择器:移除

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome v115.0.5790.170可复制演示链接 https://jsfiddle.net/BenKhz/yfwqc6mu/1/ 参考[这里的文档](https://grapesjs.com/docs/api/selector_manager.html#available-events)描述一下那个虫子开放式提供的小提琴 [此处](https://jsfiddle.net/BenKhz/yfwqc6mu/1/)在 Canvas 上选择一个组件,并通过选择器管理器添加类。(“添加”和“更新”事件将被捕获)从类管理器中移除一个类'editor.on...

artf

你好,@BenKhz之所以这样,是因为“selector*”事件与全局Selectors容器有关(当你从组件中移除选择器时,Selector本身仍然存在,因为它可以在其他地方使用),如果你想跟踪组件选择器的变化,必须使用'component:update:classes'事件

BenKhz

啊!我误会了。谢谢你的澄清。继续加油!

ClaudeCode

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

#53122023年8月17日作者 srinivas9772 个回答
0 个反应

列表的富文本编辑器缩进操作的问题

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome V115可复制演示链接 https://jsfiddle.net/srinivas977/ahgLxv6e/10/描述一下那个虫子 如何复现这个漏洞?在提供的JSFiddle中,包含一对文本行和选择列表。接着,添加一个子列表,然后添加子列表。之后,点击选定元素外的选项会使子列表中的某个物品消失。 这个现象也在这个视频链接中看到(从视频第30秒开始注意): https://github.com/GrapesJS/grapesjs/assets/49796104/59de9aa5-5f3f-43ae-9ed1-358b86ac8b27 预期的行...

artf

不幸的是,由于默认实现依赖于 [deprecated execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand),导致太多边缘情况难以处理,已经不值得再花时间去处理了。 我建议只用它来处理基本格式(例如加粗、斜体、下划线等),对于更复杂的元素,我强烈建议创建[自定义组件](https://grapesjs.com/docs/modules/Components.htm...

ClaudeCode

谢谢你举报,@srinivas977。 关于列表富文本编辑器缩进操作的问题的好建议!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:*”事件进...

#52862023年8月8日作者 saharhagekr2 个回答
0 个反应

图像边界和部分元素位置错误

在较小的笔记本屏幕(比如MacBook)上,图片的边框和某些元素的位置不对(当我点击移动或调整图片大小时) 当编辑器在大屏幕上渲染时,我就没有这个问题了。 我不确定是不是我漏掉了什么配置步骤。 有人能帮帮忙吗?这是常见问题吗? 例如: <img width=“217” alt=“截图 2023-08-08 下午3点20分19分” src=“https://github.com/GrapesJS/grapesjs/assets/121887023/9b83c4a2-c944-4faf-94e0-3d6bca9c80d1”> <img width=“245” alt=“截图 2023-08-08 下午3:20 25” src=“htt...

artf

@saharelhage请避免将讨论转化为议题。GitHub 问题应仅通过正确遵循模板从[这里](https://github.com/GrapesJS/grapesjs/issues/new/choose)创建。

ClaudeCode

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

#52802023年8月7日作者 fluke7772 个回答
0 个反应

视图中的事件处理程序未绑定到组件

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 115.0.5790.114 可复制演示链接 https://jsfiddle.net/mcraf3se/5/ 描述一下那个虫子 你好,我刚开始用GrapesJS,所以很可能我误解了某些根本性的问题。 我在为自定义组件视图设置事件处理程序时遇到了困难。 如何复现这个漏洞? 在链接的JS小提琴中。将我的分区拖拽到画布上点击其中(应该有带有“stuff”的div)。 预期的行为是什么? 根据文档[这里](https://grapesjs.com/docs/modules/Components.html#define-custom-co...

artf

这里的错误是用了箭头函数,只需用 'clickOnElement() {' 来替代它

ClaudeCode

谢谢你举报,@fluke777。 关于事件处理程序在视图中但不绑定到组件,这个问题很棒。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something c...

#52212023年7月7日作者 Staubgeborener2 个回答
0 个反应

移动设备上的桌面版本

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Safari 16.5可复制演示链接 https://grapesjs.com/demo.html https://staubgeborener.de/描述一下那个虫子 我试用的是官方的[演示](https://grapesjs.com/demo.html)。我什么都没改,只是点击“查看代码”按钮,把html和css文件下载成压缩包。这些文件上传到了我的网页服务器,桌面设备运行良好。但只要我用移动设备(比如iOS——Safari浏览器)访问这个网页服务器,网站还是桌面版,而不是移动版。演示本身已经实现了移动端版本。 如何复现这个漏洞?访问 https:/...

artf

这与核心无关,只是导出 HTML 中缺少一个元标签demo.html '''html <meta name=“viewport” 内容=“width=device-width,initial-scale=1”> ``` 如果你想提交永久居民申请,我很乐意帮你合并

ClaudeCode

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

#51992023年6月23日作者 rmadeiraneto3 个回答
0 个反应

组件属性的变化会在所有实例中重现,而不仅仅是一个实例

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v114 可复制演示链接 https://jsfiddle.net/rmadeiraneto/t659usxv/39/ 描述一下那个虫子 如何复现这个漏洞?进入块列表,将自定义组件“示例”拖到画布上画布中显示三个来自默认属性(数组)的元素选择“示例”组件进入特质面板,点击加号图标几次这将将示例组件属性中的项目添加到数组中,并在页面中绘制将另一个示例块拖入画布注意你添加到数组中的项目也在该组件的新实例中显示 预期的行为是什么? 在更改第一个组件的属性后创建第二个组件实例时,通常第二个组件的属性应是默认值 '[1,2,3]' 中定义的第一个...

artf

感谢@rmadeiraneto的报告。是的,不幸的是,如果你以这种方式变异数组/对象属性,这就是个问题,为了避免这种情况,你有两个选择:避免直接变异(更新时分配新引用)将“默认值”定义为函数 “''js 默认值: () => ({ customArray: [1,2,3] }), ``` 但不幸的是......第二个选项现在😅不行,我会在下一个版本修复它

rmadeiraneto

@artf使用默认值作为函数是可行的,感谢你的快速回复和提供解决这个问题的替代方案。 关于第一个建议,我认为问题不在于人们是否应该变异或不变异对象,因为我们讨论的是使用提供的方法(集合)。抱歉我没时间看源代码,但你很可能在“set”方法里变了默认对象,可能是因为引用来自组件生命周期的早期。同样,没有深入看代码,我假设当你将默认值与组件属性合并时,你保留了对默认对象的引用,而不是使用会返回副本的合并方法,比如 from immutable。 我会尽量找时间研究代码,并提出更具...

ClaudeCode

谢谢你举报,@rmadeiraneto。 关于组件属性的变化在所有实例中重现,而不仅仅是一个实例的好建议!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“c...

#51752023年6月10日作者 krishnaeverestengineering4 个回答
0 个反应

移动方法没有按预期工作

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 https://codesandbox.io/s/adoring-margulis-873kdv 描述一下那个虫子 背景 移动组件的方法没有按预期工作。 这段代码没有按预期工作。 这段代码应该能用。当 sameParent 是 false 且目标索引为 1 时,比如 0 到 1 的位置就不会移动到行为准则 [X] 我同意遵守本项目的行为准则

krishnaeverestengineering

解决方法:https://github.com/GrapesJS/grapesjs/pull/5176

artf

谢谢@krishnaeverestengineering,但这实际上是将组件移入同父节点时的预期行为。这是因为“at”还应考虑组件本身的索引。 所以,如果你尝试将“组件1”移到索引0或1,什么都不会发生。如果你需要把它移到“组件2”以下,你必须标注索引2

krishnaeverestengineering

谢谢@krishnaeverestengineering,但这实际上是将组件移入同一父节点时的预期行为。这是因为“at”还应考虑组件本身的索引。 所以,如果你尝试将“组件1”移到索引0或1,什么都不会发生。如果你需要把它移到“组件2”以下,你必须标注索引2 但我不太理解它的使用场景。通常在最后版本中,'at '应该算是索引。那怎么把组件从0移到索引1呢?

#51732023年6月9日作者 FaisalShaikhHA3 个回答
1 个反应

编辑。Css.setRule API 没有按预期工作,它没有更新现有规则。

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 版本 112.0.5615.137(官方构建)(arm64) 可复制演示链接 https://jsfiddle.net/yhj6qa1u/6/ 描述一下那个虫子 如何复现这个漏洞?选择一个组件,并使用样式管理器添加样式。使用'编辑器'。为了为该组件设置某种样式,请注意之前的样式已被移除,但根据文档,它应该会更新 CSS 规则。 预期的行为是什么? 它应该更新现有规则。 目前的行为是什么? 它取消了现有规则,而不是更新现有规则。 https://github.com/GrapesJS/grapesjs/assets/102785785/28560d08...

artf

你好,@FaisalShaikhHA这是预期中的行为,但我猜“setRule”的文档有点误导。规则实际上是更新的(不会用相同的选择器创建新的规则),但样式只是被替换。 如果你需要添加新样式而不是替换它们,这就是你应该做的 “''js const selector = '#${this.getId()}'; const rule = 编辑器。Css.getRule(selector); 编辑。Css.setRule(selector, { ...统治?getStyle(),...

FaisalShaikhHA

感谢@artf的澄清

ClaudeCode

谢谢你举报,@FaisalShaikhHA。 关于编辑器的好问题。css.setRule API 没有按预期工作,它没有更新现有规则。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', (...

浏览所有主题