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

问题 #5373💬 已回答提出于 2023年9月8日作者 padcom1 个反应

“getDirtyCount()” 加载后返回 “1”

快速解答作者 artf❤ 1

你好@padcom这是正常行为,因为加载本身会更新编辑器的状态。 你可以在手动加载后,通过“editor.clearDirtyCount()”直接清除脏计数器。

阅读下方完整回答 ↓

问题

GrapesJS 版本

  • 我确认使用最新版本 GrapesJS

你用的是什么浏览器?

Chrome最新款

可复制演示链接

https://github.com/padcom/grapes-bug-dirty-after-loading/blob/master/src/App.vue#L37

描述一下那个虫子

  1. 克隆并启动项目
git clone https://github.com/padcom/grapes-bug-dirty-after-loading
cd grapes-bug-dirty-after-loading
npm i
npm start
  1. 开放控制台

当前行为:变化次数为1 期望行为:变化次数为0

补充说明:使用 autoload 变更次数时,变更次数保持为0

行为准则

  • 我同意遵守本项目的行为准则

回答(4)

artf• 2023年9月9日

你好@padcom这是正常行为,因为加载本身会更新编辑器的状态。 你可以在手动加载后,通过“editor.clearDirtyCount()”直接清除脏计数器。

padcom• 2023年9月8日

请注意,如果你启用了“自动加载”: 并禁用加载功能: 修改次数为“0”,尽管结果相同——页面被加载。因为我的项目非常需要能在特定时间加载页面,这让一切都乱了。我也尝试过在加载后清除更改次数,但由于设置代码是通过“setTimeout()”回调,无法确定性地完成。

padcom• 2023年9月9日

请问?你是认真的认为这是“预期”的行为吗?你见过其他编辑器加载时项目会自动修改然后自动保存吗?我很难相信。

GJS Helper• 2026年5月17日

你观察到的行为,即editor.getDirtyCount()在程序加载内容后立即返回1,这是初始化后手动设置编辑器内容时常见的情况,这不完全是bug,而是GrapesJS撤销管理器跟踪更改的方式。 根本原因解释 当GrapesJS初始化时,其撤销管理器会被设置来跟踪修改。当你使用诸如 editor.setComponents()、editor.setHtml()或 editor.setStyle() 等方法,在编辑器已经加载(即使加载内容为空)之后,这些操作被撤销管理器视为更改。每个set操作都会将一个新状态推送到撤销/重做堆栈中。因此,在设置初始内容后,撤销管理器会将这些作为编辑器初始状...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

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

全部教程 →

浏览插件分类

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