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

GrapesJS 问题

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

找到 336 个问题

🔍 style-manager
#51052023年5月11日作者 Baghunts2 个回答
1 个反应

用(prop,value)来添加style o component,是不正确的工作。

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome@latest 可复制演示链接 https://no-link.com 描述一下那个虫子 ![图片](https://github.com/GrapesJS/grapesjs/assets/133208978/3a5ce51a-fedf-4fd7-9063-a5af519690b9) ![图片](https://github.com/GrapesJS/grapesjs/assets/133208978/0b990b40-94b1-48c1-94dc-c4d81ADF0368)行为准则 [X] 我同意遵守本项目的行为准则

artf

谢谢@Baghunts,发现得很好。目前的解决方法是 '.addStyle({ 'border-left': '...' })`

GJS Helper

GrapesJS中组件中没有正确应用background-image样式的问题通常有两个常见原因之一:CSSurl()语法错误,或者组件缺乏足够的维度来显示背景。 根本原因分析 缺少url()封装: 在 CSS 中设置background-image时,图像路径必须包含在 url() 函数中。如果你只提供 URL 字符串而没有url(),浏览器会将其视为无效的 CSS 值,样式不会被应用。 错误: "https://example.com/image.jpg" 正确: "u...

#50902023年5月3日作者 FaisalShaikhHA2 个回答
1 个反应

组件脚本函数在保存页面后运行两次

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 112.0.5615.137(官方配置)(arm64) 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 组件定义: 丢弃、保存和重新加载时,有两个地方调用同一个脚本。一个在保存的 HTML/JSON 里,另一个是 Grapesjs 自己添加的。 如何复现这个漏洞?添加带有脚本函数的自定义组件类型。放下它并保存页面。重新加载页面时,脚本函数运行两次。 预期的行为是什么? 脚本函数应该只运行一次。 目前的行为是什么? 脚本函数运行两次。 行为准则 [X] 我同意遵守本项目的行为准则

artf

正如[这里](https://grapesjs.com/docs/modules/Storage.html#project-data)解释的,编辑项目时不应重新导入输出HTML,只需导入JSON。

GJS Helper

你遇到的组件 script 函数在保存并重新加载页面后运行两次的问题,是 GrapesJS脚本管理系统中的已知行为(或者说是个 bug,视角度而定)。这源于 GrapesJS 如何处理和序列化组件脚本,用于编辑器画布和最终导出的 HTML。 根本原因解释 当你在GrapesJS组件模型中定义script属性为函数时,GrapesJS执行两个主要动作导致双重执行: 内联脚本嵌入: GrapesJS将脚本函数序列化成字符串,并直接嵌入组件HTML结构中的<script>标签中。...

#50892023年5月2日作者 davidrhoderick3 个回答
0 个反应

在SCSS中导入codemirror库时出现错误

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Firefox 112.0.1 可复制演示链接 https://github.com/davidrhoderick/grapesjs-检验 描述一下那个虫子 如何复现这个漏洞?跟随入门(你可以用Typescript和SCSS看到我用一个基础的Parcel项目来理解的结构)当你进入“主题”步骤时,尝试导入 Grapes SCSS时会报错。 预期的行为是什么? 只要我按照“入门教程”操作,一切都能正常工作。 目前的行为是什么? 当我进入应该允许我用SCSS自定义应用外观的步骤时,出现了以下错误: 如果需要执行某些代码以重现该漏洞,请将其粘贴到下...

davidrhoderick

有趣的是,基于CSS的样式确实有效。

artf

看起来 Parcel 变换器试图导入的是 'codemirror/lib/codemirror.js',而不是 'codemirror/lib/codemirror.css': “''CSS @import“codemirror/lib/codemirror”; ``` 所以我建议你在相关包裹上开启问题

GJS Helper

你遇到的问题,@parcel/transformer-sass: expected "{"导入GrapesJSSCSS时,是模块捆绑器如Parcel解析和流程样式表导入时常见的问题,尤其是在处理既有JavaScript又包含CSS组件的第三方库时。 根本原因 GrapesJS 利用 CodeMirror 实现其富文本编辑器和代码编辑器功能。虽然 GrapesJS的核心 SCSS(grapesjs/src/styles/scss/main.scss)对自身组件进行了样式化,但...

#50862023年5月2日作者 SagarMaria3 个回答
0 个反应

Style:property:update 和 Property onChange 都被过度触发

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome 版本 112.0.5615.137(官方版本) 可复制演示链接 https://jsfiddle.net/SagarMaria/sunygp2f/3/ 描述一下那个虫子 如何复现这个漏洞?在 jsfiddle 中只需点击“Hello World”组件。 观察大量控制台日志。点击画布上其他地方,重复。 预期的行为是什么? style:property:update 应该只在所选组件的样式属性更改时触发 目前的行为是什么? style:property:update 事件反而会多次触发,即使只是选择了某个组件 如果需要执行某些代码...

artf

该行为是正确的,因为“style:property:update”会在风格管理器[属性](https://grapesjs.com/docs/api/property.html#property)的任何更新时触发(不仅仅是其值)。所以针对你的具体情况,你需要以这种方式更新回调 “''js Editor.ON('style:property:update', ({ property, to }) => { 检查房产名称,以及更新是否与价值相关 如果 (property.get...

SagarMaria

你好,@artf感谢你的快速回复,但实际上问题的一部分仍然是,即使你做了更改,比如点击“中心”对齐无线电选项和你建议的 if 语句,后续选择该组件时,'style:property:update' 值仍然会被 loging 出去,'property' 和 'to' 仍是现有值(即使你不改动,只选择组件)。下面有个简短的视频,我也根据你的建议更新了 jsfiddle。 有没有办法直接监听收音机值的变化,或者在样式管理器里点击不同的收音机选项?我也尝试使用属性的“onChang...

GJS Helper

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

#50832023年4月29日作者 DanavsSite4 个回答
0 个反应

方块不能拖到画布上

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 陶瑞 可复制演示链接 描述一下那个虫子 如何复现这个漏洞?... 预期的行为是什么? ... 目前的行为是什么?** ... 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 行为准则 [X] 我同意遵守本项目的行为准则

DanavsSite

![2023-04-29 143431-Greenshot](https://user-images.githubusercontent.com/109663198/235335067-0d202a20-e26e-4fce-8d4d-168504175239.png)

DanavsSite

我刚发现是因为 WebView2。Webview2 的支持??!

artf

我觉得这更多是因为Tauri配置的问题,而不是GrapesJS,因为我们用的是原生的HTML5拖放功能

#50592023年4月19日作者 abubaker4172 个回答
0 个反应

第二次使用模板Grapes编辑器时不接受编辑器第一次创建的随机ID的CSS

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 版本 111.0.5563.147(官方构建)(64位) 可复制演示链接 我在jsfilddle上无法实现可重复的版本。我在下面提供了详细说明。 描述一下那个虫子 如何复现这个漏洞?这是我 Grapes 年上传的模板,头部有风格标签的内联CSS,正体标签也有内联风格 https://jsfiddle.net/spiral417/udye5ov1/第一次 Grapesjs 从正体标签获取内联CSS,插入随机ID,并在这些ID中放入CSS。所以我保存了所有CSS样式,但当我第二次使用同一个模板和 grapes 提供的setStyle时, gra...

artf

@Spiral1234如果你无法重现问题,很可能是你这边的问题,没有可复现的演示,很难判断问题所在

GJS Helper

你遇到的问题源于GrapesJS在导入HTML时如何处理和规范样式,尤其是内联样式。让我们拆解根本原因,提供正确的方法。 根本原因解释 GrapesJS导入HTML时,执行一个关键的样式规范化步骤: 内联样式提取:对于具有style属性的元素(内联CSS),GrapesJS“提取”这些样式从HTML中移除。它从元素中移除style属性。 唯一ID分配: 为了维护样式,GrapesJS为该特定元素分配唯一标识符(例如data-gjs-id="cXXX"或生成类名如gjs-co...

#50522023年4月16日作者 innothetechgeek2 个回答
0 个反应

通过Vue入口加载的样式无法工作

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 无 描述一下那个虫子 我正在将 grape.js 插件集成到vue.js。我有一个预构建页面,里面有预构建的HTML和CSS。 当我把页面vue.js组件加载到编辑器时,所有vue.js样式都会丢失。但如果我移除 grapeJs 初始化方法,样式就正常工作了。 请帮帮我。我想把通过vue.js入口加载的样式加载到编辑器里 行为准则 [X] 我同意遵守本项目的行为准则

artf

@innothetechgeek遇到真正的bug问题,你应该做一个可复现的演示,因为通常会有一些与核心本身无关的问题。无论如何,根据你的描述,你可能想通过['canvas' options](https://grapesjs.com/docs/modules/Components-js.html#template-related)定义你的样式条目。

GJS Helper

你遇到的问题是,Vue.js入口加载的样式在初始化时丢失GrapesJS这是常见行为,源于GrapesJS如何隔离其编辑器画布。 根本原因 GrapesJS默认会在一个<iframe>中渲染其编辑画布。iframe 创建了一个独立的浏览上下文,这意味着父文档中定义的样式(你的Vue.js应用运行的对象)不会自动应用到 iframe 内的内容。你的Vue.js样式是正确应用到主应用程序的,但GrapesJS画布作为 iframe 内的独立文档,不会继承这些样式。 解决方案:将...

#50492023年4月13日作者 ronaldohoch4 个回答
2 个反应

Problem when dragging component composed by image and link

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 勇敢的最后版本 可复制演示链接 https://jsfiddle.net/rp7oc96v/1/ 描述一下那个虫子 嗨,亚瑟! 我正在创建一个新组件,一个链接中的图片,就像 mj-image 组件一样,但我卡在一个配置里,或者说是个bug...... 如何复现这个漏洞?放置“Link na Imagem”块当你尝试从图片中拖拽新组件时, grapesjs 选择图片而不是组件根标签(<a>)如果需要拖动整个组件,我需要使用工具栏中的图标。 预期的行为是什么?子组件没有父元素就不会。 目前的行为是什么?如果子节点 img 元素没有属性 data...

gustavohleal

嗨! 我测试过你的方案。它确实能正确更改图像,且将图像锁定在主组件内,你可以移动它。模型中的“src”属性会被更改,但当你移动组件时,它会回到占位符图像。如果你更改图片然后打开视图代码模态,你会发现“src”属性不像模型中那样发生变化。我认为这是因为Grapes在导出代码中没有为图片设置“id”。 检查打印件: 在组件丢弃时不设置图像: ![图片](https://user-images.githubusercontent.com/22385451/232051993-20...

artf

@gustavohleal我的错误,你必须直接更新'src'属性,而不是属性'image.set({ src: asset.getSrc() });'

artf

使用 'data-gjs-locked=“true”属性忽略图片,正确更新你的自定义组件 “''js 移除runCommand(“open-assets”); 因为在模型端运行它没什么意义 你可以通过方块激活组件(https://grapesjs.com/docs/api/block.html#properties) 通过使用“激活”属性 init(){ editor.runCommand(“open-assets”); } 在视图中处理资产更新 浏览量:{ 事件:{ db...

#50402023年4月10日作者 abubaker4171 个回答
0 个反应

添加可样式事件,使样式可以被覆盖,打开

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 版本 111.0.5563.147(官方构建)(64位) 可复制演示链接 我提供了代码 描述一下那个虫子 增加了可样式事件,使样式可以覆盖 https://github.com/GrapesJS/grapesjs/issues/1041 https://github.com/GrapesJS/grapesjs/pull/1056 @tommedema,@artf你能帮我查一下吗? 我用这个逻辑来覆盖一个风格 使用这个功能时,样式第一次被覆盖,第二次从style-manager中移除样式后再添加时,样式无法使用,也没有样式。 刷新后又重新激活...

GJSBlock

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

#50202023年3月31日作者 at-codes2 个回答
1 个反应

在视图面板按钮更改标题属性无法持久

GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? 铬可复制演示链接 https://jsfiddle.net/em9kt2Lb/描述一下那个虫子 如何复现这个漏洞? 在编辑器加载时实现下面的代码 预期的行为是什么? 按钮标题会变,也会保持变化 目前的行为是什么? 按钮标题会变,但点击一个后又会恢复原状。 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 行为准则[X] 我同意遵守本项目的行为准则

artf

你好,面板按钮的 @at-code 标题直接连接到 [i18n locale strings](https://github.com/GrapesJS/grapesjs/blob/976e791c5abd6f876a0f29b58de32ff1549f32c2/src/i18n/locale/en.js#L48),所以你需要在那里更新这些字符串。你可以在这里找到更多关于i18n模块的信息[https://grapesjs.com/docs/modules/I18n.html...

GJS Helper

你遇到的问题,即点击按钮标题后会恢复,源于直接操作 GrapesJS UI组件中的DOM元素。 GrapesJS,像许多现代Web框架一样,通过底层数据模型和视图管理UI(通常内部使用Backbone.js面板和按钮)。当你直接用jQuery更改 title 属性时,你绕过了模型视图架构。在交互(比如点击)时,相关视图可能会根据模型重新渲染或更新状态,实际上覆盖了你的直接DOM更改。 根本原因: 直接操作 GrapesJS 面板按钮(例如使用 $(elem).attr('t...

浏览所有主题