GrapesJS 问题

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

找到 466 个问题

🔍 components
#54572023年10月11日作者 boardmain4 个回答
3 个反应

加载ProjectData 0.21.7时编辑器冻结

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 117.0 可复制演示链接 本地主持 描述一下那个虫子 Grapesjs“: ”^0.21.7“, editor.loadProjectData({ “资产”: [], “风格”: [], “pages”: [{ “组件”: “<div>TEST TEST TEST TEST</div>” }] }) 编辑冻结 行为准则 [X] 我同意遵守本项目的行为准则

antoinematyja

你好,我在使用 Vue 3 并用 Vue 'ref' 存储编辑器时也遇到了同样的问题。不过我不确定这是不是个好主意。 代码复制品大致如下: 解决办法:不要用“ref” 😅

artf

你能提供一个可复现的演示吗?试了你的例子,我没看到冻结......

boardmain

尝试使用最新版本21.7 我试着把它放到网上,但我只是用自定义命令粘贴了 HTML,粘贴了源代码,但之后编辑器卡住了(我需要关闭页面)。 例如: ~~~ btnImp.onclick = () => { editor.runCommand('core:canvas-clear') 编辑。css.clear() editor.setComponents(codeViewer.getContent().trim()) 编辑。Modal.close() } ~~~ 其中 code...

#54412023年10月3日作者 padcom2 个回答
0 个反应

没有ID,显示没有样式但带有“script”的元素,导致脚本无法运行这些元素

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome最新款可复制演示链接 https://github.com/padcom/grapesjs-no-id-for-element-example描述一下那个虫子 在创建自定义 GrapesJS 组件时,如果这些组件带有 'script()'(组件的运行时行为)且该组件没有样式,那么根元素没有 'id' 属性,这会导致 'document.querySelectorAll('#<id-goes-here')' 失败,运行时脚本不会被调用。 在给出的例子中,我创建了一个特殊的自定义元素,称为“<content-preview>'(https://g...

artf

问题源于'jsInHtml: false'的使用以及内部JS生成器的处理方式。 我会尽量在下一个版本里修复这个问题。

ClaudeCode

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

#54252023年9月26日作者 javadsamiee2 个回答
2 个反应

添加相似页面时,仅会更改组件ID。

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 117 可复制演示链接 https://jsfiddle.net/mirjavad/ctsx7zer/5/ 描述一下那个虫子 我想为一个页面创建一个克隆动作,并注意到了这个bug。 如何复现这个漏洞?创建多个具有相同组件ID和CSS的页面 页码: [{ 编号:“第1页”, 名称:“第1页”, 组件: '<div id=“comp1”>第1页</div>', 风格:“#comp1 { 颜色:红色 }', }, { 编号:“第2页”, 名称:“第2页”, 组件: '<div id=“comp1”>第2页</div>', 风格:'#comp1 { 颜色:绿...

artf

好的抓包@javadsamiee将在下一次版本中修正

ClaudeCode

谢谢你举报,@javadsamiee。 关于添加类似页面时,组件ID会被更改,这个问题很棒。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('som...

#54242023年9月26日作者 bgrand-ch2 个回答
1 个反应

'component:styleUpdate' 事件未被触发

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome 116.0.5845.187可复制演示链接 https://jsfiddle.net/yLcvbwjd/描述一下那个虫子 如何复现这个漏洞?添加“component:styleUpdate”事件用“addStyle”或“setStyle”更新组件的样式 预期的行为是什么? 'component:styleUpdate' 被触发 目前的行为是什么? 'component:styleUpdate' not 已触发行为准则[X] 我同意遵守本项目的行为准则

bgrand-ch

@artf ❤️

ClaudeCode

谢谢你举报,@bgrand-ch。 关于'component:styleUpdate'事件未触发的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.l...

#53792023年9月12日作者 Sw33tgt4 个回答
4 个反应

组件的类别修改不会自动检测

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome 版本 116可复制演示链接 https://jsfiddle.net/h5b0ndvL/1/描述一下那个虫子 当组件在画布中重新渲染时,模型定义中添加了一个新属性会被渲染,但当组件渲染到画布时,新添加的类不会被添加。初始化函数 Component.ts 添加默认属性以及组件属性。 'this.set('attributes', { ...(result(this, 'defaults').attributes ||{}), ...(this.get('attributes') ||{}), });` 然而,当我查看 initClasses(...

Sw33tgt

目前作为一个变通方法,我用 'editor.on('component:mount', (component) => {});' 函数添加了这个功能,直到收到反馈。看起来效果不错。如果某个类从定义中移除,该被移除的类仍然可以在已保存组件的类列表中使用,但我猜没有解决办法。 “打字稿” editor.on('component:mount', (component) => { const cls = component.getClasses() ||[]; const cls...

Sw33tgt

是的,这对类是有意为之,按照你的方法,你无法从组件中移除定义的类,它们会在组件初始时不断添加。 这对于组件中某个类被遗忘,想在渲染时添加它到另一个版本插件时是可以的。我们把这些类设置为私密,这样用户看不到它们,也无法手动移除。 我相信作为一种变通方法,我可以把旧类的定义存到新属性上,然后在渲染新类之前比较它们,看看哪些需要被删除。我可以想办法解决我们需要的。 感谢你的回复@artf,

Sw33tgt

在 Component.ts 的 initClasses() 函数中做类似这样的功能,会把新类添加到渲染的元素中。告诉我你的看法: “打字稿” const cls = this.get('classes') ||攻击者 ||[]; 从const变为令 令 clsArr = isString(cls) ?cls.split(' ') : CLS; / 与默认职业对比 / cont dCls = result(this, 'defaults').classes ||[]; co...

#53782023年9月11日作者 Sw33tgt4 个回答
0 个反应

未捕获类型错误:在图层管理器面板拖动组件时无法读取未定义属性(读取“Canvas”)。

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v116.0.5845.97 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?从画布中选择任意组件打开图层管理器面板选择第一个“分段”组件使用箭头移动该段并改变顺序 预期的行为是什么? 该部门应将新位置移动 目前的行为是什么? 控制台正在抛出一个错误:未捕获类型错误:无法读取未定义属性(读取“Canvas”)和未捕获类型错误:无法读取未定义属性(读取“方法”)。 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: “''js 你的代码在这里 ``` ![图片](http...

Sw33tgt

我降级到v0.21.4后这个问题就没了,所以只在最新版本上出现。

padcom

最简单的例子里也有同样的问题。降级到0.4会让它消失。回归?

artf

是的,已经修正了[这里](https://github.com/GrapesJS/grapesjs/issues/5355)。我会推迟本周末发布新书。

#53722023年9月8日作者 uncldrw1 个回答
0 个反应

无法添加自定义AtRule(@container,@font面)

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Windows、Chrome、React 可复制演示链接 / 描述一下那个虫子 当尝试添加自定义 atRules 如 @container 或 @font-face 时,CSS 总是编译成 @media。我尝试过各种方法,包括使用 Css.setRules 和 Css.addRules,以及插入 HTML 字符串,但都无济于事。 这是我给的代码: 行为准则 [X] 我同意遵守本项目的行为准则

ClaudeCode

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

#53622023年9月5日作者 rozek4 个回答
0 个反应

拖拽/丢弃属性函数在拖拽时未被调用

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 版本 1.56.20 Chromium:115.0.5790.171(Offizieller 构建)(arm64) 可复制演示链接 没有 描述一下那个虫子 我用特定的类型拖拽规则定义了自己的组件类型: 但配置函数从未被调用。相反,拖曳无需任何约束,而插入则仅作用于包装元素。 一个可能很重要的细节:我的“拖拽模式”被设置为“绝对”状态 行为准则 [X] 我同意遵守本项目的行为准则

rozek

即使将“可拖拽”和“可丢弃”设置为“true”,我也无法将一个元素拖入另一个元素

rozek

第一个解决方法可以帮助将组件放入其他组件:从 'grapesjs.init({...})中移除'dragMode:'absolute'`相反,在你希望拖拽(甚至可能可丢弃)的每个组件类型的“model.defaults”中添加“dmode:'absolute' 然而遗憾的是,在将组件移入或移出容器后,绝对位置并不会重新计算......这使得“功能”使用起来非常困难。更不用说,在图层面板内将组件分类到容器中非常繁琐。 而且,“可拖拽”和“可丢弃”这两个函数依然没有被调用。

artf

在绝对模式下,没有移动组件在其他组件内外的概念。绝对模式下的组件只在样式位置上更新,DOM中不会移动,这就是为什么可拖拽/可放在这里不合理。 如果你不完全理解系统原理,请@rozek避免打开BUG问题,建议使用讨论区。

#53552023年9月1日作者 andcmatias1 个回答
0 个反应

移动层

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬116 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?打开图层管理器,尝试移动组件它会禁用该组件,并在控制台中显示错误信息。未捕获类型错误:无法读取未定义属性(读取“画布”) at o.selectTargetModel (Sorter.ts:500:27) at o.onMove (Sorter.ts:545:10) e时(executeBound.js:8:65) 在HTMLDivElement。<anonymous> (bind.js:10:12) 在HTMLDivEleme...

ClaudeCode

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

#53522023年8月31日作者 rozek3 个回答
0 个反应

未捕获的语法错误:意外令牌 '{',时间为CanvasView.ts:590:12

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 版本 1.56.20 Chromium:115.0.5790.171(Offizieller 构建)(arm64) 可复制演示链接 没有 描述一下那个虫子 我有一个带有脚本的组件类型 在使用此类组件预览项目时,GrapesJS 会创建以下 HTML 如果你仔细检查这个输出,会发现内部的“脚本(){'没有被正确闭合。 我已经尝试过找一些变通方法,但还没成功。但我会继续尝试,因为这个问题最终成为了障碍...... 行为准则 [X] 我同意遵守本项目的行为准则

rozek

这很有趣:定义一个独立的功能 以及定义文档中描述的组件类型 按设计运作。 但听起来还是很奇怪,内联函数在导出的HTML中会出现语法错误......

artf

@rozek个好发现,下次发布会修正的

ClaudeCode

谢谢你举报,@rozek。 未捕获语法错误:CanvasView.ts:590:12 的意外令牌 '{' 似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox...

浏览所有主题