#45772022年9月12日作者 joukhar2 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome最新可复制演示链接 没有演示描述一下那个虫子 我想阻止事件,但我做不到,我试过了 以及如何预防商店事件,请帮帮忙 “''js editor.off('asset:upload:error'); editor.on('asset:upload:error', function(e) { e.preventDefault(); console.log(e); }) ```行为准则[X] 我同意遵守本项目的行为准则
artf
如果你有问题可以用讨论区,问题只针对可复现的漏洞
ClaudeCode
谢谢你举报,@joukhar。 关于防止使用自定义插件发生事件的好问题。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')...
#45762022年9月12日作者 benryanwilliams4 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome 104.0.5112.101可复制演示链接 https://jsfiddle.net/7cLr0xt2/3/描述一下那个虫子 如何复现这个漏洞? 不知为何,我无法在上面链接的小提琴里重现这个bug,因为第34行“selectedComponent.components('<span liquid=”if contact.id“>jhbjhhgjj</span> <span liquid=”else“>qwewqeqwe</span>')''并不能替换组件的内部组件,所以我只能分享一个项目中发生的情况视频,步骤如下:双击“Hello Worl...
artf
RTE在编辑时依赖于DOM内容,所以如果你故意用类似的程序删除它 “''js onRender() { this.el.innerHTML = this.model.get(“displayedText”) }, ``` 编辑完成后,内部组件将被移除。
benryanwilliams
好的,谢谢@artf,这说得通。 然而,那些代码行,以及 必须在画布内渲染正确的选中状态(包括组件最初渲染时以及用户选择不同的“if”状态,从而改变“displayedText”): https://user-images.githubusercontent.com/67364267/189854125-9544d34b-2f71-4b0c-872e-dbdfb2232fd9.mov 你能想到用RTE编辑后保留内部组件的方法吗?也许我可以把这些内部组件存储在“条件文本”组件...
benryanwilliams
我还需要做更多测试,但看起来我通过在创建/编辑组件时保存内部组件,然后使用'rte:disable' 钩子,如下,解决了这个问题: 这看起来有点老套,如果你能想到更好的方法,请告诉我。
#45752022年9月10日作者 Aventrue3 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 这是一个编译错误 描述一下那个虫子 AssetManagerConfig 中缺少属性自定义。 如果我用未分类的葡萄,它能行,但我想用它来搭配类型。有没有解决这个问题的解决办法? 我会像这里描述的那样做:https://grapesjs.com/docs/modules/Assets.html#customization => { this.openGalleryDialog(道具); }, 接近:(道具)=> { this.dialog.closeAll(); }, };
ClaudeCode
谢谢你举报,@Aventrue。 AssetManagerConfig中缺少自定义的问题似乎是竞赛条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤:** 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于...
#45732022年9月9日作者 ahmafi3 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Firefox 104.0.1可复制演示链接 https://codesandbox.io/s/grapesjs-parsestyle-bug-13h771描述一下那个虫子 如何复现这个漏洞?创建一个带有“style”属性的自定义组件,在它的“model”中。在组件“model”init“函数中使用”this.addAttributes“。将该组件添加到编辑器中。 基本上,当我在组件“model”定义中有一个“style”属性时,使用'this.addAttributes',我就遇到了这个问题。 我在v0.19.4时也遇到过同样的问题。 你可以在浏览器中...
Singwai
这表现得很正常。有两个类似的按键可以改变组件的样式。(“风格”和“风格”) “styles”会用CSS字符串,并一次性附加到最终有效载荷上。我通常会为组件定义一个特定的状态的默认CSS。 “style”会接收CSS哈希,并直接用ID附加到该特定组件上。 你可以导出 HTML,看看它们的表现。 以下是相关文件:  寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something cha...
#45722022年9月9日作者 stljeff14 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 镀铬 可复制演示链接 https://jsfiddle.net/1hza4t9n/ 描述一下那个虫子 如何复现这个漏洞?初葡萄创建事件处理程序,用于页面更新时使用。更新页面观察事件处理程序未触发 预期的行为是什么? 页面事件处理程序:更新触发 目前的行为是什么? 没什么 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: “''js const editor = Grapesjs.init({ 容器:“#gjs”, fromElement: 0, pageManager: { 页码:[ { 编号:“索引”, 风格:'身体 { 颜色:红色; }',...
artf
更新页面 你是如何更新页面的? 值得一提的是,“page:*”事件只针对页面模型触发,而不是页面内容,比如: “''js 编辑。Pages.getSelected().setName('我的页面'); ```
stljeff1
任何更新、拖动方块、更改文字颜色。文本内容的变更。在 JS Fiddle 里,我拖动文本块,更改内容,换颜色。我更新时没有看到触发事件,所以我开始质疑自己的期望 我正在尝试了解如何构建自定义存储管理器。我用Grapes已经很久了,Grapes和我的服务器/数据库之间有很多“中间件”。我正在升级Grapes,所以想了解最合适的事件来跟踪所做的更改。 最终,我正在更多地了解店长,我有信心这会带我达到目标。 不过,我想了解页面管理器......我得好好考虑你说的页面模型。
artf
好吧,'page:update' 事件不是你需要的,因为它不会在内容更改时触发(所以我决定关闭这个问题,因为事件正常工作)。 你能解释一下你想构建哪种自定义存储管理器吗?存储管理器本身在内容更改时已经会触发,所以我不明白你为什么要重建这个功能。
#45702022年9月8日作者 rahul-singh-bv2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 105.0.5195.102(官方版本)(x86_64) 可复制演示链接 描述一下那个虫子 如何复现这个漏洞?创建一个新的自定义代码块,并添加一个iframe标签,比如“<iframe src=”http://localhost:8888/embed/shopping-list“></iframe> 预期的行为是什么? 它在画布中插入一个 iframe。 目前的行为是什么? 它会出错并失败 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 不 错误日志 行为准则 [X] 我同意遵守本项目的行为准则
artf
感谢你的报告,@rahul-辛格-bv 这个bug其实已经 https://github.com/artf/grapesjs/issues/4480 被报告并修复了,但遗憾的是修复还没发布 😞
ClaudeCode
谢谢你举报,@rahul-singh-bv。 安全和依赖性问题很重要。GrapesJS 团队积极致力于保持依赖系统的更新。 为你现在: 运行“npm审计修复”以查看可用的补丁 查看是否有更新的GrapesJS版本,可能已经解决了这个问题 如有稳定版,升级前先测试最新稳定版 如果漏洞非常严重,可以使用“npm audit fix --force”,但请务必彻底测试 理解风险: 在GitHub安全公告中查看具体漏洞详情 并非所有高严重性问题都会影响你的代码路径 某些漏洞仅在特定...
#45462022年9月2日作者 FaisalShaikhHA4 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 版本 104.0.5112.101(官方构建)(arm64)可复制演示链接 https://codepen.io/faisal-praella/pen/rNvOwgR描述一下那个虫子 如何复现这个漏洞?选择组件,双击,然后 ctrl+a 选择文本,然后点击退格键。注意组件消失,且不可选择或编辑。 预期的行为是什么? 该组件不应消失。 目前的行为是什么? 组件会消失,且无法选择或编辑。 https://user-images.githubusercontent.com/102785785/188111128-9b174ea7-590b-4552-86d2-...
artf
这都是因为这些风格造成的。  把它们拿掉,它就能正常工作了。
artf
@FaisalShaikhHA你能提供一个可复现的演示吗?因为我无法从官方演示中复现它。
FaisalShaikhHA
@artf这里是演示版:https://codepen.io/faisal-praella/pen/rNvOwgR 选择一个组件,双击,然后 ctrl+a 选择文本,然后点击退格键。 注意组件消失了,且无法选择或编辑。 即使我们尝试更新文本,链接组件也会消失。 请参考上面的视频。
#45442022年9月1日作者 akhalid-dev1 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v91 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?打开图层管理器。选择“身体”下的任意物品。双击选择名称,即可“编辑”。按退格键以移除任何名字。重复这个过程两次。这样物品就没有名字,无法再次选择。 预期的行为是什么? 我们不应该能完全删除这个名字,即使完全删除了,它应该可以再次编辑。 目前的行为是什么? 目前,你可以尝试两次后移除该名字。行为准则 [X] 我同意遵守本项目的行为准则
ClaudeCode
感谢你举报,@akhalid-dev。 关于图层管理器可能会被移除名称且无法重新选择的好问题。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somethin...
#45372022年8月29日作者 salemkode2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 勇敢 1.33.105 铬:96.0.4664.93 可复制演示链接 https://codesandbox.io/s/relaxed-mccarthy-v2e37w 描述一下那个虫子 如何复现这个漏洞?添加带有img或svg标签的组件类型将该组件添加到画布中 预期的行为是什么? 只要加法必须无误 目前的行为是什么? 它将会回归 “RangeError 最大呼叫堆栈大小已超过” 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: “''js const editor = Grapesjs.init({ 容器:“#gjs”, fromElement:...
artf
你好@salemkode基于[自定义组件处理](https://grapesjs.com/docs/modules/Components.html#how-components-work),通过设置“isComponent”返回“true”且无条件,产生最大调用堆栈问题。 它会不断创建新组件,因为你也有“components”属性,但由于新类型在栈顶且总是返回“true”,它会一直引用自己。所以我建议你正确调整你的“isComponent”方法,或者干脆把它移除。
ClaudeCode
谢谢你举报,@salemkode。 关于RangeError最大呼叫堆栈大小超过的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something...
#45292022年8月24日作者 FaisalShaikhHA4 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 版本 104.0.5112.101(官方构建)(arm64)视频演示链接 https://d.pr/i/27EgH2描述一下那个虫子当我们调整带有“xyz”类的图片大小时,页面上所有同类元素也会被调整大小,因为编辑器会为这些类添加高度、宽度、CSS。但当我从图片中移除所有类时,编辑器会用 ID 来设置 CSS 的高度宽度。我正在编辑器中加载一个引导模板。 录音链接:https://d.pr/i/27EgH2 繁殖步骤:加载引导模板进行编辑。添加多个带有影子类的 div ex.(''<'div 类=''shadow'></div>''')将一张图像放入带有...
DevMetwaly
https://grapesjs.com/docs/modules/Components.html#components-css组件优先的样式 默认情况下,当你在画布中选择组件并应用样式时,会对其现有的类进行更改。这会导致所有应用类别的组件发生变化。如果你只想对特定选定组件应用样式,就必须通过这种方式选择 componentFirst 策略。
FaisalShaikhHA
谢谢,@DevMetwaly有效,抱歉我错过了。
FaisalShaikhHA
你好,@artf,首先,这个框架非常棒,感谢你让它开源。 正如上面评论里描述的,我遇到了这个奇怪的问题,如果我做错了什么或者有解决办法,请告诉我,谢谢。