#65432025年6月15日作者 Zedonboy1 个回答
GrapesJS 版本 [x] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 镀铬 可复制演示链接 没有 描述一下那个虫子 如何复现这个漏洞? 来自教程 我的CSS风格 预期的行为是什么? 一块空白画布 目前的行为是什么? ...  如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 行为准则 [x] 我同意遵守本项目的行为准则
GJS Helper
你遇到的问题是,尽管设置了panels: { defaults: [] },“方块”面板仍然可见,这是一个常见的混淆点。panels: { defaults: [] }配置选项确实是为了防止GrapesJS初始化其核心默认面板(比如“图层”或“样式”面板)。 然而,“方块”面板通常是由grapesjs-blocks-basic插件添加的,该插件默认包含并启用GrapesJS。该插件会添加自己的面板和组件,独立于核心panels.defaults设置。因此,仅仅禁用默认面板并...
#65022025年4月25日作者 jsxOverdose2 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v135.0.7049.96 可复制演示链接 https://jsfiddle.net/bqkLwt8j/ 描述一下那个虫子 当元素具有内联样式且匹配基于ID的CSS规则时,ID选择器的样式会被移除——即使内联样式不会覆盖这些属性。然而,基于类的 CSS 规则不会出现这个问题,因为它们的行为符合预期。 如何复现这个漏洞? 为特定ID添加CSS规则,例如“#frame2 { color: red; }` 添加带有该ID和内联样式的元素,例如'<div id=“frame” style=“font-size: 14px;”>'” 注...
artf
谢谢你的报告@jsxOverdose 下次版本会修复
GJS Helper
你准确识别了GrapesJS中内联样式似乎完全覆盖基于ID的CSS规则,即使是对无冲突属性的属性。这确实偏离了标准CSS专一性规则,可以看作GrapesJS内部样式管理处理内联样式与ID选择器交互时的一个bug。 根本原因分析 在标准CSS中,特异性要求内联样式(style="...")具有最高的特异性,其次是ID选择器(#id),然后是类选择器(.class),最后是元素选择器(tag)。当一个元素适用多条规则时,具有较高特异性的规则优先用于冲突属性,而低特异性规则中的非...
#64582025年3月20日作者 accvi4 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 https://jsfiddle.net/qbpodnm4/ 描述一下那个虫子 如何复现这个漏洞? 在画布中选择一个组件。 访问风格管理器,检查“General”是否被重命名为“Allgemein”。 预期的行为是什么? 画面显示了“Allgemein”。 目前的行为是什么? 画面显示“将军”。 例如sector.setOpen(true)即可。 行为准则 [x] 我同意遵守本项目的行为准则
mosh-tudor
@accvi https://github.com/GrapesJS/grapesjs/discussions/6031#discussioncomment-10234496
accvi
难道是我在代码里做错了什么吗?AI帮不上忙。
artf
[@accvi](https://github.com/accvi) [#6031(回复帖中)](https://github.com/GrapesJS/grapesjs/discussions/6031#discussioncomment-10234496) ☝️
#64452025年3月14日作者 bgrand-ch3 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Firefox 136.0.1(64位) 可复制演示链接 https://grapesjs.com/docs/api/editor.html#editor 描述一下那个虫子 如何复现这个漏洞? 去 https://grapesjs.com/docs/api/editor.html#editor 预期的行为是什么? 展示活动列表。 目前的行为是什么? '{REPLACE_EVENTS}' 行为准则 [x] 我同意遵守本项目的行为准则
artf
文档更新:https://grapesjs.com/docs/api/editor.html#available-events
artf
谢谢@bgrand,我很快🙇 ♂️会修好的
GJS Helper
感谢你报告这个问题。你正确地识别了 GrapesJS 文档网站上的一个漏洞。 根本原因: {REPLACEEVENTS} 占位符表明文档生成过程未能正确注入编辑器事件列表到 editor.html API 页面。这是文档生成器的构建时问题,而非 GrapesJS 库本身的漏洞。 当前状态: 我们承认本部分文档不完整,使用户难以发现所有可用的编辑事件。 寻找编辑活动的变通方法: 在文档修复过程中,你可以通过几种方法发现编辑器事件: *通过 editor.on(''):程序化...
#64162025年2月22日作者 clonefunnels2 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Firefox 和 Chrome 可复制演示链接 我无法做远程存储的演示 描述一下那个虫子 导入任何标签旁边带有“>”的标签> 示例:'<a href=“#”>></a>' 还有类似的情况: '<a href=“#”>首页</a> > <a href=“#”>商店</a>>' 这也破坏了它...... '<span class=“test”>主页</span> > <span class=“test2”>购物</span>>' 存在时,尤其是靠近 HTML 标签,GrapesJS 显示“未定义”且无法加载内容的问题,表明 GrapesJS内部的 HTML 解析或组件转换逻辑存在问题。 根本原因分析 GrapesJS依赖HTML解析器(通常在浏览器中DOMParser)将原始HTML字符串转换为其内部组件模型。虽然DOMParser本身在处理HTML实体方面通常较为稳健,但问题很可能出现在GrapesJS后续将解析后的DOM节点处理成...
#63652025年1月8日作者 MLMarxx4 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome 版本 131.0.6778.205 可复制演示链接 https://codesandbox.io/p/sandbox/naughty-microservice-5hp3h4 描述一下那个虫子 如何重现该漏洞:将 dark-style 类添加到正文中: js editor.CssComposer.addRules(".dark-style .test-block { margin-top: 50px; }"); 预期行为是什么: 在样式管理器中解释为margin-top: 50px; 当前行为如何: 在样式管理器中没有显示,但在...
artf
是的,这不支持,因为试图匹配任何可能的规则可能会影响性能。 不过你可以通过 [styleManager.select](https://grapesjs.com/docs/api/style_manager.html#select) 选择任意规则。
MLMarxx
好的,谢谢你的澄清——我现在用的是select,有什么办法用这种方式定位媒体标签吗?
artf
你可以获取你需要的CSSRule(['getRule'](https://grapesjs.com/docs/api/css_composer.html#getrule)),然后传给styleManager.select
#63482024年12月7日作者 Frubl2 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?尝试选择,比如整个侧边栏工具/文本/所有功能抓取并放置在画布上 预期的行为是什么? 可能只复制粘贴文本或净化过的 html,或者可以拖拽只放我做成可删除的元素 目前的行为是什么? 我可以拖拽Canvas里的任何东西。  行为准则 [x...
artf
你可以通过“canvas:dragdata”事件控制画布中丢失的内容 https://jsfiddle.net/artur_arseniev/87rcb24n/
GJS Helper
你报告的问题是, GrapesJS 画布外的任意元素(包括编辑器界面的部分)可以拖拽到画布中,这是浏览器原生拖放功能导致的常见行为。默认情况下,浏览器允许拖放大多数可选内容或元素。 GrapesJS的画布作为标准HTML元素,继承了这种行为。 根本原因: 当你拖动元素时,浏览器会为 DataTransfer 对象填充各种数据类型(例如, text/plain, text/html)。如果 GrapesJS 没有明确拦截并阻止这些 dragover 和 drop 不需要内容的...
#62962024年11月5日作者 maneeshp972 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Arc v1.61.1 可复制演示链接 https://codesandbox.io/s/grapesjs-react-components-n6sff 描述一下那个虫子 @artf首先感谢你提供这个了不起的库。我当时试图在 grapesjs 中创建自定义React组件,偶然发现了之前报告的React集成问题中的一个沙盒链接。 [https://codesandbox.io/s/grapesjs-react-components-n6sff] 我通过引用沙盒后成功让自定义React组件工作,但有一个问题依然存在。每当自定义React组件被拖...
artf
是的,从演示的角度来看这是正常的。 你可以玩代码找到解决办法,但我会关闭这个,因为它不是核心漏洞。
GJS Helper
你观察到的行为,即自定义 React 组件被包裹在带有GrapesJS特定属性的额外div中,这对 GrapesJS 管理 DOM 组件至关重要。这个div在 GrapesJS 语境中不是“额外”包装器;它就是GrapesJS组件本身。 根本原因解释 GrapesJS组件结构:在GrapesJS中,画布中的每个组件都由对应的DOM元素表示。默认情况下,该元素是一个div。该元素作为组件在DOM中的根节点,使GrapesJS能够: 附加其内部属性(例如,data-gjs-ty...
#62692024年10月25日作者 bt-mkt4 个回答
GrapesJS版本 [X] 我确认使用最新版本GrapesJS 你用的是什么浏览器? Chrome 版本 130.0.6723.59(官方版本)(arm64) 可复制演示链接 https://codepen.io/btmkt/pen/QWeOJRB?editors=1111 描述一下那个虫子 如何复现这个漏洞?打开控制台。在画布内放置多个组件(例如用三列方便复现)。将extra类别末尾添加的test-comp组件拖曳到新增组件上。 预期的行为是什么? 组件model和 viewInit 事件(至少不确定是否有其他)应该只在将组件放入画布时触发,而不是每次拖到可丢弃组件上方时触发。 目前的行为是什么? 组件model和view初始...
artf
@mohamedsalem401这很可能是因为编辑器太肤浅了。 我觉得利用canMove中的“临时”选项(我们已经用它跳过部分动作)是合理的。你怎么说? “''js const wrapper = this.getShallowWrapper(); srcModel = wrapper?.附录(来源,{ 临时:真实})[0] ||无效; ```
mohamedsalem401
@artf 是的,我怀疑这和“浅层编辑器”有关。希望临时方案能奏效,然后我再开永久居民申请
bt-mkt
@mohamedsalem401这很可能是因为编辑器太浅了。我觉得利用canMove中的“临时”选项(我们已经用它跳过部分动作)是合理的。你怎么说?“''jsconst 包装器 = this.getShallowWrapper();srcModel = wrapper?.附录(来源,{ 临时:真实})[0] ||无效;``` 你好,@artf, 上面看到的改动(我看到已经实现了)似乎并没有解决我遇到的问题。它和0.22.1版本一样。 我已经把手写笔升级到了0.22.3(ht...
#62502024年10月23日作者 maxming23332 个回答
GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? Chrome 129.0.6668.101可复制演示链接 https://grapesjs.com/演示描述一下那个虫子 如何复现这个漏洞? 开放 https://grapesjs.com/演示 在 DevTools 中运行这个脚本: 预期的行为是什么? 成功无错误地复制 目前的行为是什么? 成功复制但有错误: <img width=“472” alt=“image” src=“https://github.com/user-attachments/assets/14309772-7e8e-4ce2-ba14-7aefbed8614f”> --...
maxming2333
除了上述方法,还有其他复制页面的方法吗?
GJS Helper
你在克隆GrapesJS页面的主组件并将其添加到新页面时遇到的TypeError: Converting circular structure to JSON,是与组件序列化存储相关的常见问题GrapesJS。这是因为实时GrapesJS Component模型,尤其是在渲染后带有关联的DOM元素(el)后,包含复杂的内部引用,形成循环依赖。当GrapesJS尝试序列化此类组件(例如将其添加到新页面以实现持久化)时,JSON.stringify因这些循环结构而失败。 根本原...