#49402023年2月21日作者 mani-rai2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Google Chrome 版本 110.0.5481.100(官方版本)(64 位) 可复制演示链接 https://stackblitz.com/edit/js-3urscf?file=index.html,index.js 描述一下那个虫子 如何复现这个漏洞?初始化编辑器销毁编辑器再次初始化编辑器 预期的行为是什么? 使用的代码只是官方文档中的入门代码。它应该可以毫无问题地重新初始化。 目前的行为是什么? 控制台上显示多个错误。类型错误:无法读取未定义的属性(读取“get”) at o.runDefault (Editor.ts:874:28)...
artf
是的,由于某些延迟异步函数(例如StorageManager),编辑器实例预计不会立即被销毁,但这可以修复。 目前你可以通过这样做来解决这个问题: “''js setTimeout(() => { editor.destroy(); ... ```
ClaudeCode
谢谢你举报,@mani-rai。 关于销毁和重新初始化会产生“无法读取未定义属性(读作'get')”的好问题。ProseMirror 推荐的方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.l...
#49062023年2月6日作者 panditlakshya2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v108.0.5359.98 可复制演示链接 https://codesandbox.io/s/grapes-js-template-literal-forked-6kgvrb?file=/src/App.js 描述一下那个虫子 我正在尝试创建一个自定义组件,通过脚本注入HTML代码后,能够识别内部HTML组件类型。 如何复现这个漏洞?直接通过脚本注入 HTML 预期的行为是什么? Canvas 应该能在注入代码后识别文本、图片等组件类型。 目前的行为是什么? 注入部分被识别为整个文本组件。(注入代码可以包含带有图像或文本的div元素)...
artf
请仔细阅读[本指南](https://grapesjs.com/docs/modules/Components-js.html),“脚本”中的所有内容都不在编辑器的权限范围内。你可以用 [component.components](https://grapesjs.com/docs/api/component.html#components) 方法更新组件本身,或者直接在定义中指定 'components: '<div ....'。
ClaudeCode
谢谢你举报,@panditlakshya。 关于Grapesjs在通过脚本设置innerHTML时无法识别组件类型,这个问题非常好。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => co...
#48482023年1月16日作者 NicoGGG2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Firefox v91.4.1 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?访问 grapesjs 基础演示:https://grapesjs.com/demo.html清理画布添加组件链接在浏览器控制台中执行 'editor.getComponents().models[0].attributes.content'。输出是“Link”,即链路组件的内容通过内联编辑来更改链接文本再次在浏览器控制台执行“editor.getComponents().models[0].attribu...
artf
这是与富文本编辑器相关的一些逻辑所预期的。 你可以用 'component.getInnerHTML()' 获取内部 HTML,或者用 'component.components()' 获取内部组件。
ClaudeCode
谢谢你举报,@NicoGGG。 关于组件内容在内联编辑后设置为空字符串,这个问题很棒。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something ch...
#48472023年1月15日作者 wunksert3 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome 版本 109.0.5414.87描述一下那个虫子 如何复现这个漏洞?在 GrapesJS 画布上创建@keyframes动画在 JS 中,通过将以下字符串传递到编辑器中创建一个新的 CssRule。Css.addRules:将其添加到画布中:“编辑器。Css.addRules(updatedRule)' 预期的行为是什么? DOM应该更新 目前的行为是什么? DOM没有更新。但是,如果我调用“editor.getCss()”,我能看到不透明度的正确值返回了。 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 行为准则[X] 我同意遵守本...
artf
似乎与 CssGroupRuleView [这里](https://github.com/artf/grapesjs/blob/e6a086afac77d8da73f225dd0aa84b3d178ec47b/src/css_composer/view/CssRulesView.ts#L64-L80)有关。对于像“@keyframes”这样的at规则,我们必须强制重新渲染父容器。
wunksert
@artf又遇到了“editor.”这个问题。CssComposer.remove(myCssRule)' 编辑器CSS会移除规则,但规则不会被冲入DOM。你建议我如何在保持编辑器状态不变的情况下强制重新渲染 DOM?“editor.refresh” 并没有把样式冲入 DOM
ClaudeCode
谢谢你举报,@wunksert。 关于CSS编辑不会持久保存到DOM的问题很棒。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something...
#48372023年1月10日作者 quentin-bettoum4 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Firefox 109 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 你好, 我注意到当我在 projectData 中加载多个 HTML 中使用相同“id”的页面时,葡萄会自动在每个页面上增加“id”,尽管这些是不同的页面。 为了演示这个问题,下面有一段代码,我用包含两个页面的“projectData”初始化 grapesjs,这两个页面在某些 HTML 标签上使用相同的 ID。 在最终的HTML列表中,你可以看到像“body”和“main-title”这样的id在第二页被递增为“body-2”和“...
artf
嘿,@bgrand-ch,我认为有一天所有Grapesjs实体都会有一个全局“UID”,所以从长远来看,我预计这个问题会被修复 🤞
quentin-bettoum
起初,我想把所有页面一起生成,这样所有页面都能输出一个统一的CSS输出。但现在我尝试另一种风格方案。 所以对于“id”问题,分别生成每个页面可能是解决方案。谢谢你的建议。
bgrand-ch
Grapes 使用一些数据属性(类似“data-grapes-id”)作为唯一标识符,以便让 id 留给某些前端脚本使用。 我喜欢这个想法 💯
#47712022年12月7日作者 henry-mmw3 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v108 可复制演示链接 无关联 描述一下那个虫子 在编辑器中添加任何“@-webkit-keyframe”的CSS规则。显示为“@media”。 我现在给构建器添加了不少工具,似乎每当我添加任何webkit-keyframe的CSS规则时,编辑无法理解它们,显得“有@media”“的”。只是想知道它是否支持这个功能,我只是多心了,或者如果不支持,有没有什么办法可以帮你实现?行为准则 [X] 我同意遵守本项目的行为准则
ronaldohoch
我只是来这里开启同样的问题!:( @artf,你可以添加这个代码来检查。 “''js 编辑。CssComposer.addRules(' .animateanimated { -webkit-animation-时长:300ms; 动画时长:300毫秒; -webkit-animation-fill-mode:两者兼用; 动画填充模式:两者兼具; } @keyframes 渐入 { 0% { 不透明度:0 } 到 { 不透明度:1 } } .animatefadeIn {...
artf
报告并修复 [此处](https://github.com/artf/grapesjs/issues/4727)
ClaudeCode
谢谢你举报,@henry-mmw。 GrapesJS 不理解 '@-webkit-keyframe' CSS 规则的问题。 似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(Co...
#47632022年12月1日作者 quentin-bettoum2 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Firefox 106可复制演示链接 https://grapesjs.com/demo.html描述一下那个虫子 你好, 当我从 0.19.5 升级到 0.20.1 时,我注意到用 'editor.getProjectData()' 获取的页面 JSON 比以前重了不少。 区别在于,在0.20.1中,JSON中的每个组件都包含以下代码: '''json “undoexc”:[ “状态”, “开门” ] 0.20.1 '''json “框架”: [ { “组件”: { “类型”:“包装器”, “可风格化”: [], “undoexc”:[ “状态”, “...
ClaudeCode
谢谢你举报,@quentin-bettoum。 关于_undoexc状态开放的好问题。ProseMirror 推荐的方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somethin...
#47542022年11月30日作者 jasonliang-dev2 个回答
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 107.0.5304.122(64 位) 可复制演示链接 https://jsfiddle.net/j5khz1gm/ 描述一下那个虫子 如何复现这个漏洞?创建具有以下默认属性的自定义组件类型: “''js { someText: “<\/script><svg onload='alert(1)'>”, “脚本道具”: [“someText”], 脚本:function() { this.innerHTML = “”; } } 行为准则 [X] 我同意遵守本项目的行为准则
derciesto
@jasonliang-dev,有最新进展吗?我也遇到同样的问题。
ClaudeCode
谢谢你举报,@jasonliang-dev。 关于关闭“</script>'标签未逃脱脚本属性的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.lo...
#47392022年11月20日作者 hemaltandel12 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Edge 版本 107.0.1418.52(官方构建)(64位)可复制演示链接 https://codesandbox.io/s/peaceful-glade-rbfbwt?file=/src/app/app.component.ts描述一下那个虫子 如何复现这个漏洞?用葡萄酱创建新应用调用 Grapejs 的初始化,使用默认配置。新增名为“test1/2”的新职业使用 developer toool 输入画布 html。它被重新命名为“test1-2”。 预期的行为是什么? 类别名称不应更改。它应该保持原名。例如test1/2 在之前的版本中,我们能够...
artf
你仍然可以使用“escapeName”选项 “''js 选择经理:{ escapeName: value => value }, ```
ClaudeCode
谢谢你举报,@hemaltandel1。 关于css类名中“/”转换为“-'的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something ch...
#47272022年11月12日作者 dreamsight1 个回答
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 版本 107.0.5304.107(官方构建)(64位)Chrome可复制演示链接 没必要,任何人都能复制描述一下那个虫子 保存HTML和CSS时,程序格式转换为CSS 即“@keyframes滑动{” 致 “@media滑梯{” 这会让CSS滑块代码变得无用,你可以自己测试,只需在画布区域加载“@keyframes幻灯片”CSS,然后查看代码转换过程。 我还没找到原因,但如果有人有建议,请指点我:) 下面的示例 @keyframes 幻灯片 { 0%15%{margin-left:0%} 20%35%{margin-left:-100%} 40%55%...
ClaudeCode
谢谢你举报,@dreamsight。 * 的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤:* 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有助于团队更快识别根本原因 在报告中包含 Gra...