GrapesJS 问题

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

找到 203 个问题

🔍 enhancement
#36072021年7月9日作者 gMakaan1 个回答
0 个反应

专长:代码查看器 - 前往选定的画布块

当点击“查看代码”并选中画布中的元素时,代码查看器可以显示对应代码并选择外部HTML——这对于即时复制或快速检查非常方便。

ClaudeCode

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

#35752021年6月28日作者 jcsofts3 个回答
0 个反应

Grapes.min.js:2 未捕获类型错误:无法读取未定义的属性“长度”

我添加 <iframe src=“https://app.conversiobot.com/boot/fvMEvO” width=“100%” height=“500” frameBorder=“0” allow=“geolocation”></iframe> 使用了自定义代码组件。 我的代码在0.17.4时运行正常,但在0.17.19时错误率低于 grapes.min.js:2 未捕获类型错误:无法读取未定义的属性“长度” 在r.loadTraits (grapes.min.js:2) 在r.initTraits (grapes.min.js:2) 在r.initialize (grapes.min.js:2) at r.e.m...

artf

感谢你的报告,修复已经准备好下一次发布。

rahul-singh-bv

我在v0.19.5尝试在自定义代码块内添加iframe时也遇到类似问题

ClaudeCode

谢谢你举报,@jcsofts。 错误 TypeError:无法读取未定义的属性“长度” 发生在 Canvas 尝试访问属性时,尚未完全初始化组件生命周期。这是GrapesJS中常见的竞争条件。 立即解决办法: 如果你控制代码,可以用空检查包裹调用: “JavaScript if (component && typeof component.method === 'function') { 你的准则 } ``` 根本原因分析: Canvas 在调用你的方法之前不会验证状态。当...

#35612021年6月23日作者 AStoker4 个回答
0 个反应

专长:增强型暗影DOM支持

你想给GrapesJS添加什么? 更好的 Shadow DOM 支持,允许开发者在 Shadow 元素中渲染 GrapesJS,而无需在配置中专门传递元素而非选择器。 详细描述你的功能需求详细 当前使用元素选择器时,GrapesJS 仅使用文档查询选择器。在渲染阴影DOM时,这不起作用,因为文档不是阴影根。我希望能够定义一个阴影根,这样GrapesJS所做的任何操作或需要的内容都包含在阴影根中。 在 ShadowDOM 中使用 GrapesJS 的示例:https://jsfiddle.net/theandybob/s9bnhw30/ 最新版本有替代方案吗?[ ] 是的(描述替代方案)[x] 不 这是否与某个问题有关?[ ] 是的...

artf

你好@AStoker我不太明白你举例的真正问题是什么(除了没有在你的阴影主导里加载GrapesJS风格之外)。如果你绑定了 shadowdom,显然你不能做这个“容器”:'#gjs'',但你仍然可以像示例中那样传递 HTMLElements,那问题出在哪里?

AStoker

问题是我必须在每个地方传递HTML元素,不能使用选择器。这写起来可能很麻烦,因为我现在必须用shadow Dom的查询选择器来处理每个面板、每个元素,任何我们连接到GrapesJS的内容。 此外,如果有容器的概念,将大大帮助隔离 GrapesJS 不干扰应用的其他部分。随着越来越多的应用使用组件和自定义元素,组件间的适当隔离变得非常重要。GrapesJS 会自动从 CDN 拉入 font-awesome(也是从 CDN 拉入)到页面根,这并不理想,因为很容易存在风格冲突。如...

AStoker

我更新了JSFiddle,这样你可以看到我们在Shadow DOM中获得样式需要做些什么。但不幸的是,GrapesJS 自动添加的 CSS 存在于正体上,这不仅污染了全局样式表,还因为 GrapesJS 在 Shadow DOM 内部而毫无意义。

#35582021年6月22日作者 aimeos4 个回答
2 个反应

FATE:支持内容-安全-政策

为了减少在“敌对”环境中(如SaaS平台)中使用编辑器时可能的攻击面,必须支持CSP。这也能防止类似的问题 https://github.com/artf/grapesjs/issues/3082 目前,唯一阻碍有效 CSP 规则的问题是 GrapesJS 代码中使用了“new Function()”,这需要 CSP 规则为“unsafe-eval”。 有没有其他实现方式?

artf

好的,那我会试着在下一个版本修复它。

artf

嗯,我不太确定具体怎么修复,你说“GrapesJS代码中是否使用新Function()”是什么意思?因为源代码里没有这个。

aimeos

后来发现它在dist文件里是因为underscore.js template()方法,它使用了“new Function()”。我认为这将使得在没有“不安全评估”的情况下替换或移除强制执行CSP的依赖变得困难。

#35352021年6月14日作者 vuongluc2 个回答
0 个反应

葡萄糖 lory 滑块

我正在使用插件 grapesjs-blocks-bootstrap4 和集成的 grapesjs-lory-slider,第一次使用时是正常的,但从数据库加载时滑块功能就消失了。 我哪里做错了? 拉进去后,它依然正常工作 ![图片](https://user-images.githubusercontent.com/54711078/121833210-0b632480-ccf6-11eb-8028-735dc0381338.png) 这时我从数据库加载它们,它们变成了盒子 ![图片](https://user-images.githubusercontent.com/54711078/121833346-5aa95500-ccf...

artf

你好@vuongluc,可能是加载HTML/CSS编辑时有问题。你应该存储并加载JSON数据,看看[这个指南](https://grapesjs.com/docs/modules/Storage.html#store-and-load-templates)

ClaudeCode

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

#35252021年6月9日作者 anlumo3 个回答
0 个反应

优点:在样式管理器中,允许要求默认设置

你想给GrapesJS添加什么? CSS 属性 'float' 只适用于 'position: static;' 元素,而这恰好是默认设置。我只想在位置没有设置其他时显示浮球无线电选择器。 但是,如果我在属性定义中添加“require: ['static'];',该设置只在我明确将位置设置为”静态“时显示,而当我保持默认状态(默认状态也是”静态“)时,设置不会显示。 最新版本有替代方案吗?[ ] 是的(描述替代方案)[X] 不 这是否与某个问题有关?[ ] 是的(请提供本期链接)[X] 不

artf

你好@anlumo,你有没有尝试用类似“要求:{ position: ['static'] }''来扩展浮点定义?

anlumo

![图片](https://user-images.githubusercontent.com/644763/124964896-d494db80-e021-11eb-9b11-8741d07476bf.png) 是的。重新加载页面后似乎没问题,但切换位置后就停止工作,看起来就像截图里那样。 定义如下: “''js { 名称:“布局”, 开场:假, buildProps: ['position', 'top', 'bottom', 'left', 'right', 'flo...

ClaudeCode

谢谢你举报,@anlumo。 关于FEAT:在样式管理器中允许要求默认设置的建议很棒!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:*”事件...

#34962021年5月28日作者 anlumo4 个回答
1 个反应

成就:标记组件为脏

你想给GrapesJS添加什么? 组件应该能够标记自己为脏,触发“onbeforeunload”警告信息。 详细描述你的功能需求详细 我有一个(自定义)文本组件,用户可以输入任意文本。我把数据存储在服务器上,我想要自动保存。不过,我不希望服务器因为每一个字符都被联系到文本组件,因为那会是用户数量的巨大洪水。 我也不想更改“stepsBeforeSave”,因为像拖动组件这样的大改动应该立即保存。 目前,组件在用户离开文本组件时存储数据(设置模型上的“内容”键)。这方法有效,但当用户在文本组件仍处于焦点状态时重新加载页面,最新的更改不会应用到数据模型上。 这样可以,但我想弹出保存警告对话框(“onbeforeunload”消息)。然...

anlumo

我通过完全关闭“on-andload”处理,自己滚动来解决这个问题。

artf

编辑器有“编辑”属性,只要启用或禁用RTE就会改变,所以我猜在你的情况下,这个功能应该可行 “''js editor.on('' change:editing', (em, editing) => { window.onbeforeunload = 编辑 ||editor.getDirtyCount() ?e => 1 :零; }); ```

anlumo

这个在 onbeforeunload 处理程序之后不会被我上面提到的那个片段覆盖吗?

#34862021年5月26日作者 kuhelbeher2 个回答
0 个反应

专长:能够将所有边距、填充等属性合并更改

你好,目前 grapesjs 内置了属性,比如边际、填充,允许用户逐一更改每个属性(margin-top、margin-bottom等)。 如果能同时更改所有这些属性会很不错。比如说,有个锁定按钮,启用后会同时更改所有属性,而不是一个一个。它可能看起来像这样: ![图片](https://user-images.githubusercontent.com/37115006/119662534-2bf83700-be3a-11eb-83ff-09b7b63446d5.png) @artf有没有简单的方法可以用现有的 Grapesjs 工具实现,比如 StyleManager.addType 方法或类似的?

artf

是的,那会很酷,但遗憾的是,GrapesJS 还没有合适的 UI 模块,可以让用户通过重复使用其他组件轻松构建新的 UI 组件,所以 ['StyleManager.addType'](https://grapesjs.com/docs/api/style_manager.html#addtype) 是唯一的办法,但在这种情况下,所有元素的构建权就得你自己决定。

ClaudeCode

谢谢你举报,@kuhelbeher。 关于FEAT:能够将所有边距、填充等属性合并的建议很棒!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:...

#34802021年5月25日作者 samichamoun4 个回答
1 个反应

如何动态控制编辑器的高度,以避免笨重的滚动

我注意到如果我在初始化函数中设置高度,它会根据特定的像素数量来设置,比如“500px”。但是如果你尝试用百分比设置,比如高度:“90%”,编辑器根本没有高度。 另外我也想知道,如果什么都没设置,为什么设置了高度,因为它似乎自动计算了一个像素数量,占用了整个页面(比如100%)。 我实际上把编辑器包裹在我们CMS后台的标准页面模板里,这个页面模板在侧边菜单栏里有更多内容,迫使页面变成可滚动页面(也就是页面模板的内容总是在屏幕折叠下方)。这让编辑器功能非常差,因为如果你想在编辑器下方滚动,就必须把光标移出编辑器并滚动,这会导致用户体验很差。 我还有一个“保存”按钮,可以提交到表单,但这不属于编辑器,所以要进入保存按钮,你得再次把光标移...

ahmedderkaoui

尽量用'VH'代替'PX'。 例如:给编辑器“height: '80vh'',给导航栏'height: '20vh'''。这样,只要所有元素的“vh”之和≤100,纵向滚动就永远不会显示或需要 希望这些信息对你有帮助。

samichamoun

尝试用“VH”代替“px”。例如:给编辑器“height: '80vh'',你的导航栏'height: '20vh''。这样,只要所有元素的“vh”之和≤100,纵向滚动就永远不会显示或需要希望这些对你有帮助。 谢谢,这很有用!

artf

这更多是布局问题,与GrapesJS编辑器本身无关。

#34582021年5月16日作者 divesham1 个回答
0 个反应

专长:添加自定义块(比如 iframe),并像图片一样自定义,比如双击打开素材选项,在自定义 iframe 块中打开视频链接选项

警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可能已结案JSFiddle 入门模板 https://jsfiddle.net/szLp8h4nCodeSandbox 入门模板 https://codesandbox.io/s/1r0w2pk1vl 你想给GrapesJS添加什么? 详细描述你的功能需求详细 最新版本有替代方案吗?[x] 是的(描述替代方案)[ ] 不 这是否与某个问题有关?[ ] 是的(请...

ClaudeCode

谢谢你举报,@divesham。 关于特技:添加自定义块(即iframe)并像图片一样自定义,比如双击后打开自定义素材选项,在自定义iframe块中链接视频,这真是太棒了!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改...

浏览所有主题