PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

GrapesJS 问题

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

找到 3,464 个问题

#57392024年3月11日作者 rhoenerSBS1 个回答
0 个反应

ColorPickerOptions 界面输入错误

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v122 可复制演示链接 不适用 描述一下那个虫子 最新版本附带的ColorPicker界面定义了“preferredFormat”选项,期望获得“布尔值”,但Spectrum Colorpicker的文档显示必须是类型为“string”(文档:https://bgrins.github.io/spectrum/#options-preferredFormat) 这会导致 TypeScript 项目编译时出现错误。 如何复现这个漏洞?定义ColorPicker的“preferredFormat”选项,取自Spectrum文档中...

GJS Helper

这确实是关于ColorPickerOptions接口 TypeScript 类型定义GrapesJS的有效错误报告。根据底层 Spectrum Colorpicker 库的文档,preferredFormat属性被错误地类型化为 boolean,而应string。 根本原因 ColorPickerOptions的GrapesJS类型定义(通常出现在GrapesJS包内的index.d.ts或类似声明文件中)包含了以下错误的preferredFormat类型: 然而,Grap...

#57292024年3月8日作者 Sphenox4 个回答
1 个反应

编辑/替换链接内的文本

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v122 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?开放演示创建带有链接的文本使用默认RTE编辑文本选择整个链接输入任意内容,以替换链接文本 预期的行为是什么? 当你输入某项内容时,它应该会继续在链接内写入。 你可以编辑只包含一个字符的链接文本。 目前的行为是什么? 目前链接内只写第一个字符。从第二个字符开始,光标不再出现在链接中,所以文本会直接在链接后面插入。链接中只有一个字符时无法编辑,因此发生这种情况后你必须删除整个链接。行为准则 [X] 我同意遵守...

bernesto

@artf,你又说对了。节点的空白很重要。如果文本紧贴关闭节点,第一个按键替换文本,下一次按键离开节点,如果不对,则按预期工作。 有一个关于这个的旧帖子(https://github.com/w3c/editing/issues/1560 年),专门在webkit和blink里,讲它们是如何这样工作的。CKEditor 5的作者之一也在场,他基本上说你必须构建一个抽象层来修复这种行为,这对我们来说简直是麻烦。 @Sphenox我觉得这个问题很可能在之前的版本中也存在,从我读...

bernesto

澄清一下,你说的是链接中文本的选择和编辑异常表现吗? ![Kapture 2024-03-08 09 01 50](https://github.com/GrapesJS/grapesjs/assets/1020507/ebd610fe-ca9c-43b6-87b1-a0b336775348)

Sphenox

是的,正如你提供的视频所示。

#57242024年3月8日作者 bernesto2 个回答
0 个反应

内联元素中的空白处理

GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? Chrome v122可复制演示链接 https://jsfiddle.net/zwo0mdqf/5/描述一下那个虫子 如何复现这个漏洞?创建有效的内联块元素,如span、b、i、em等,这些元素使用多个空格、制表符或换行符作为单词分隔符。 预期的行为是什么? 这些元素渲染时应间隔一格。HTML 导出留白应尊重输入留白。 目前的行为是什么? 这些元素在编辑器中作为独立组件渲染,但呈现为一个单词。输出HTML去除了输入空白。注意:组件HTML是每个元素新行导出的,因此显示的输出会正确渲染,但getHtml()不会。 行为准则[X] 我同意遵守本项...

danstarns

最终倾向于合并提交。https://github.com/GrapesJS/grapesjs/pull/5719

GJS Helper

你遇到的 GrapesJS中空白处理问题,特别是内联元素和 getHtml() 输出,源于 HTML 解析器和 GrapesJS组件模型对不同类型的空白处理方式。 根本原因 HTML 空白空间折叠: 默认情况下,HTML 在渲染时会将多个空白字符(空格、制表符、换行)合并为一个空格。内联元素中的前置和后置空格也常被忽略。这是浏览器的标准行为。 GrapesJS 组件序列化: 当GrapesJS解析 HTML(尤其是 fromElement: true时),它会将 DOM 转...

#57202024年3月6日作者 bernesto2 个回答
0 个反应

传播组件默认值在引入子注释时可能会破坏层

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v122 可复制演示链接 https://jsfiddle.net/n38vbktg/ 描述一下那个虫子 如何复现这个漏洞?创建一个组件,传播包含可分层=true的默认值。 在“有能力”下引入一条评论。 预期的行为是什么? 评论要么保持隐藏,要么不会导致错误。 目前的行为是什么? 编辑器将该注释视为 HTMLElement。当编辑器尝试从节点读取不存在的属性(如 getComputedStyle 或 getClientRects)时,会触发多个错误。这两种方法都应先进行检查。或者——应为注释引入一个新类型,覆盖从父节点传播的默...

artf

说得好@bernesto

GJS Helper

这是一个有效的错误报告。问题出在GrapesJS的组件系统,尤其是传播layerable: true时,试图将HTML注释节点当作标准HTML元素来处理。这会导致在HTMLElements上调用特定于s的方法,如getComputedStyle或getClientRects时,Comment节点上出现错误。 根本原因 当组件默认中有layerable: true(或继承)时,GrapesJS期望其子节点在图层面板中可渲染。在解析DOM时,GrapesJS遍历所有子节点Nod...

#57182024年3月4日作者 mitcht2 个回答
0 个反应

可能存在升级路径问题,“textnode”从0.18到>版本被改为“wrapper”。

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome 版本 122.0.6261.95(官方版本)(64 位) 可复制演示链接 https://jsfiddle.net/n4x6L1v0/2/ 描述一下那个虫子 如何复现这个漏洞?保存早期版本 grapejs (0.18)的组件数据尝试将 grapesjs 作为项目数据导入到最新版本 预期的行为是什么? Grapes 可以简单地替换旧的“textnode”条目,并更新为“封装”式。 目前的行为是什么? 控制台会触发偏移错误 这段代码并非重现该漏洞的必要条件,但它目前让我能够绕过这个问题。 这里附上了我现有 grapesjs 拖动文...

artf

谢谢@mitcht,但正如我之前提到的,主组件根本不可能是 textnode,所以在核心处理这种情况或开启这个问题都没有意义。 总之,如果逻辑对你有效,就直接在编辑器里用它。

GJS Helper

你遇到的问题是一个已知的破坏性变更,涉及GrapesJS内部组件架构的演进,特别是帧根组件的处理方式。在旧版本(比如0.18)中,帧的默认根组件类型可能是textnode或类似,而在最近版本中,它已被标准化为wrapper。 根本原因 GrapesJS 经历了大规模重构,以提升其核心组件模型、渲染和操作能力。作为这些变化的一部分,wrapper 组件被引入为一个特殊的、不可渲染的容器,作为GrapesJS帧内所有内容的根元素。该wrapper组件对编辑器的内部逻辑至关重要,...

#57152024年3月4日作者 afrinxnahar1 个回答
0 个反应

API 文档中的链接断裂

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Firefox 版本 123.0(64 位) 可复制演示链接 不在 描述一下那个虫子 我猜大多数.js文件都已经变成打字稿了,但可能还有像下面这个那样的坏链接...... ![GJS3](https://github.com/GrapesJS/grapesjs/资产/125039325/A42D8156-13e5-4ba0-9cd5-6249ded1d75a)行为准则 [X] 我同意遵守本项目的行为准则

GJS Helper

感谢你在GrapesJS API文档中报告了这个坏链。你已经正确识别了根本原因。 根本原因 GrapesJS项目正在经历从JavaScript向TypeScript的重大迁移。作为这一过程的一部分,许多.js源文件被重命名为.ts或.tsx文件。你提供的链接https://github.com/GrapesJS/grapesjs/blob/dev/src/editor/model/Editor.js指向一个在dev分支上该路径和扩展名下已不存在的文件。 解决方案/变通方法...

#57082024年2月27日作者 ravisaxena2 个回答
0 个反应

能够同时更改所有边距、填充等属性

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome最新 可复制演示链接 我们现在运行在本地机器上 描述一下那个虫子 你好,目前 grapesjs 提供了内置属性,比如margin、padding,允许用户逐项更改每个属性(margin-top、margin-bottom等)。 如果能同时更改所有这些属性会更好。比如有锁定按钮,启用后会自动同时更改所有属性,而不是一个个更改。 行为准则 [X] 我同意遵守本项目的行为准则

artf

请避免在未阅读模板中漏洞问题的具体目的前打开BUG问题。

GJS Helper

这是提升 GrapesJS 样式体验的绝佳建议!默认情况下, GrapesJS的样式管理器提供对 CSS 属性如 margin 和 padding的细致控制,允许你单独调整每一侧(上、右、下、左)。虽然没有内置的“锁定”按钮来链接这些属性,但你可以通过创建自定义属性类型实现将所有侧面合并的功能。 这个自定义属性将作为“简写”控件。当你修改它的值时,它会自动更新所选组件上的四个单独边距或填充属性(例如, margin-top、 margin-right、 margin-bot...

#57052024年2月26日作者 bernesto4 个回答
0 个反应

编辑器大小调整时组件工具会出现错位

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v122 可复制演示链接 https://jsfiddle.net/Lk2bwhp4/ 描述一下那个虫子 如何复现这个漏洞?将编辑器放入容器中,然后通过程序调整容器的宽度。 预期的行为是什么? 编辑器及其所有子节点应相应调整大小。 目前的行为是什么? 编辑器中所有组件的画布位置都保留了画布调整前的偏移。 注意,窗口调整大小会重置位置。这必须在窗口内通过程序实现。用例包括编辑器在页面上,有其他面板可以调整编辑空间大小。在下面的示例中,查看在将编辑器调整到更大宽度后,工具如何与相关元素对齐。工具保持在原来的位置,直到某个事件触发更...

artf

感谢@bernesto报告,但由于我们无法检测程序布局的变化而不影响性能,在这种情况下,你必须通过 ['editor.refresh()]](https://grapesjs.com/docs/api/editor.html#refresh) 手动更新编辑器布局(例如,在你的例子中,调用直接放在 resizeEditor 函数的末尾)

bernesto

你好,@artf,我其实不小心把这个混在你最后接受的拉取请求里(src/canvas/model/Frame.ts)。你可以看看我添加的内容,看看是否造成了问题。我们现在正在测试中,没有看到性能下降,而且它解决了问题。

artf

我其实把这个误混在你上次接受的拉取请求里了 我实际上删掉了,因为看起来没什么关系 🤣 补充回来没问题,但要考虑你的例子只有桌面设备才会有效。宽度填充了容器,这会触发iframe窗口的缩小(然后触发新增事件)。如果你换成更小的设备,这个方法就不行了,那时不会触发调整大小事件,所以你仍然需要刷新调用。

#57032024年2月25日作者 bernesto1 个回答
0 个反应

颜色选择器相对于编辑器容器的偏移

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome v122 可复制演示链接 https://jsfiddle.net/v4e5d90z/ 描述一下那个虫子 如何复现这个漏洞?将编辑器放入任意容器中。 预期的行为是什么? 颜色选择器应该相对于打开该选项的输入显示。 目前的行为是什么? 选择器相对于窗口,而不是编辑器容器。这导致选择器的开启偏移量是所有偏移父容器累计偏移量。 行为准则 [X] 我同意遵守本项目的行为准则

GJS Helper

你遇到的GrapesJS颜色选择器偏移出现的问题,是第三方弹出组件(如颜色选择器、工具提示或下拉菜单)如何处理其位置的常见问题,尤其是在主应用容器本身偏移或定位时。在GrapesJS中,颜色选择功能通常由spectrum-colorpicker库驱动。 根本原因 默认情况下,spectrum-colorpicker库会直接将其选择器元素附加到document.body。当元素被附加到document.body并完全定位时,其top和left坐标相对于视口计算。库尝试根据触发...

#57002024年2月24日作者 upadhyay88442 个回答
0 个反应

=

GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? 镀铬可复制演示链接 无法提供数据敏感描述一下那个虫子 如何复现这个漏洞?在编辑器/Canvas中放置一页。将高度设定为ex-600pt,并且四边各加10pt的缓冲。现在在页面内放置两个部分。将最小高度设为某一部分,比如30点,高度为另一部分。现在,100%高度的部分与页面/父页面重叠 预期的行为是什么? 该部分不应与页面重叠,只应覆盖父页面的可用空间,包括填充边距等。 目前的行为是什么? ...它在页面上重叠 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 行为准则[X] 我同意遵守本项目的行为准则

upadhyay8844

@artf你能帮我看看吗?

GJS Helper

你遇到的问题是,当父部分有固定高度和填充时,子部分与父height: 100%部分重叠,且有其他兄弟节点存在,这是常见的CSS布局挑战。这不是GrapesJS本身的bug,而是CSS中默认表现height: 100%导致的,尤其是与标准盒模型结合时。 根本原因解释 当你在区块级元素上设置height: 100%时,它会尝试占用其父元素内容区域高度的100%。它不会自动考虑: 父级填充: 如果父节点有 padding,子节点的height: 100% 仍会针对内容区域计算,而...

浏览所有主题