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

问题 #6116✓ 已解决提出于 2024年9月3日作者 SamMousa4 个反应

AsDocument 无法如预期工作

快速解答作者 SamMousa❤ 2

谢谢,但这不是重点。我完全能找到一个变通方法,但这并不能解决这个bug。 bug是通过“getProjectData()”导出,然后通过“loadProjectData()”导入,应该会得到相同的状态。 而且你提议的改版实际上是直接写入画布,这意味着不能保证画布会完全不被动。(例如编辑器中有个“样式”配置,可以将样式注入画布头部)

阅读下方完整回答 ↓

问题

GrapesJS版本 [X] 我确认使用最新版本GrapesJS 你用的是什么浏览器? 铬128 可复制演示链接 https://jsfiddle.net/sammousa/bxgsdc12/11/ 描述一下那个虫子 如何复现这个漏洞?通过选项{asDocument: true}加载一个带有非空<head>的 HTML 字符串。通过editor.getProjectData()导出数据,确保包含<head>内容通过editor.loadProjectData()加载从2导出的数据 通过editor.getProjectData()导出数据,确保它没有<head>内容 预期的行为是什么? 我预计这种情况应该始终成立,可能除了某些细节,比如自动生成的ID。 目前的行为是什么? 使用时头部内容不会加载loadProjectData()。行为准则 [X] 我同意遵守本项目的行为准则

回答(4)

👍 最有帮助SamMousa• 2024年9月4日

谢谢,但这不是重点。我完全能找到一个变通方法,但这并不能解决这个bug。

bug是通过“getProjectData()”导出,然后通过“loadProjectData()”导入,应该会得到相同的状态。

而且你提议的改版实际上是直接写入画布,这意味着不能保证画布会完全不被动。(例如编辑器中有个“样式”配置,可以将样式注入画布头部)

artf• 2024年9月4日

这个bug是,先通过getProjectData()导出,再通过loadProjectData()导入,应该会得到相同的状态。

是的,绝对不是预期,我们会去了解的。

感谢演示👍中那些易于复现的步骤

artf• 2024年9月4日

谢谢@SamMousa详细的bug报告总是欢迎的。 如果需要指引,我们很乐意为你指引方向 🙇 ♂️

GJS Helper• 2026年5月17日

你遇到的问题是GrapesJS中已知的行为(或者说是bug,取决于不同解释),就是<head>内容在最初加载editor.setComponents(html, { asDocument: true })时,使用editor.loadProjectData()恢复项目状态时没有正确重新应用或保留。虽然editor.getProjectData()正确序列化了head内容,但editor.loadProjectData()并不能用这些存储的信息完全重新填充画布的<head>。 根本原因 使用editor.setComponents(html, { asDocument: true })时,Gr...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。