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

问题 #5478💬 已回答提出于 2023年10月21日作者 bryanjamesmiller1 个反应

自定义块类别不能像原型对象方法名一样命名,否则会破坏 Grapes

快速解答作者 artf❤ 1

感谢@bryanjamesmiller所有的见解,我会去调查解决办法。

阅读下方完整回答 ↓

问题

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 版本 118.0.5993.88(官方构建)(arm64) 描述一下那个虫子 如何复现这个漏洞? 视频演示第一部分: https://github.com/GrapesJS/grapesjs/assets/8781182/bfbbf6ea-7780-417e-880b-61992897c740 第二部分: https://github.com/GrapesJS/grapesjs/assets/8781182/c61fa3b5-c62a-459d-bdf2-d8dc106E310b 第三部分: https://github.com/GrapesJS/grapesjs/assets/8781182/b8540f2d-f52b-42ae-aaa5-87d6f9fb395c 预期的行为是什么? 抱歉视频有三部分,是因为文件大小限制。预期的行为是我应该能给自定义块类别命名任何我想要的,比如“构造子”,不会破坏 grapes。 目前的行为是什么? 目前如果你选择任何内置的 JavaScript 对象原型方法名(比如“constructor”),就会破坏 JS Grapes 。 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: https://jsfiddle.net/grati...

回答(2)

artf• 2023年11月1日

感谢@bryanjamesmiller所有的见解,我会去调查解决办法。

GJS Helper• 2026年5月17日

这确实是一个有效的错误报告,你准确地识别了 GrapesJS块分类处理中经典的JavaScript陷阱。问题在于自定义块类别被用内置 Object.prototype 方法命名。 根本原因 GrapesJS和许多 JavaScript 应用一样,内部使用纯 JavaScript 对象来管理项目集合,比如块类别。在这个结构中,你提供的类别名称(例如 'constructor')会成为内部对象中的一个键。例如: JavaScript的对象属性查找机制涉及原型链。当你尝试访问像 internalCategories['constructor']这样的属性时,如果 internalCategorie...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

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

全部教程 →

浏览插件分类

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