TypeError:e.getRoot 不是函数(样式管理器中的竞态条件)
和 https://github.com/GrapesJS/grapesjs/issues/6705 类似 我无法创建那种竞态条件(例如通过 API 选择和移除),在你的例子中是在组件上检查 getRoot,但组件 API 上没有这样的方法
阅读下方完整回答 ↓问题
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 所有浏览器(Chrome、Safari、Firefox、Edge) 可复制演示链接 https://jsfiddle.net/saeedhbi/powxyjdq/3/ 描述一下那个虫子 如何复现这个漏洞? 初始化 GrapesJS 编辑器 选择画布中的一个组件 快速删除组件(按删除键或使用删除命令) 样式管理器的去跳出更新回调在组件被销毁后执行 注意“类型错误:e.getRoot 不是函数” 预期的行为是什么? 样式管理器应在尝试调用组件的方法前验证组件仍然有效。要么: 在处理前过滤掉损坏或无效的组件 在组件方法调用周围添加try-catch保护 在调用方法前检查组件有效性(例如,'typeof component.getRoot === 'function'') 在异步样式更新中移除组件时,不应触发任何错误。 目前的行为是什么? 当风格管理器尝试更新已被销毁或从 DOM 移除的组件样式时,GrapesJS 会抛出“TypeError: e.getRoot 不是函数”。这是组件选择/样式更新与组件移除/销毁之间的竞赛条件。 错误信息: 铬: 狩猎: 行为准则 [x] 我同意遵守本项目的行为准则
回答(3)
和 https://github.com/GrapesJS/grapesjs/issues/6705 类似
我无法创建那种竞态条件(例如通过 API 选择和移除),在你的例子中是在组件上检查 getRoot,但组件 API 上没有这样的方法
和 https://github.com/GrapesJS/grapesjs/issues/6705#issuecomment-3921025039 一样,问题出在我们外部库,使用 GrapesJS,因为遇到了类似 6705 问题的情况,我会关闭它。感谢你的评论。
谢谢你举报,@saeedhbi。 关于TypeError: e.getRoot不是函数(样式管理器中的竞态条件),这个问题很棒。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命周期 editor.on('compo...
相关问答
通过相似的问题讨论继续研究。
问题 #6705
TypeError:无法读取键盘处理程序中未定义属性(读取“toLowerCase”)
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 所有浏览器(Chrome、Safari、Firefox、Edge) 可复制演示链接 https://jsfiddle.net/saeedhbi/tdsLa6qe/ 描述一下那个虫子 如何复...
问题 #5990
当你删除组件时,组件间的重复类也会被删除。
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 126.0.6478.127(Windows) 可复制演示链接 https://jsfiddle.net/t06s4oLb/8/ 描述一下那个虫子 如何复现这个漏洞?将第1节添加到画...
问题 #4754
关闭脚本</script>属性的“''标签无法逃脱
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 107.0.5304.122(64 位) 可复制演示链接 https://jsfiddle.net/j5khz1gm/ 描述一下那个虫子 如何复现这个漏洞?创建具有以下默认属性...
问题 #4576
点击“样式环绕”按钮会影响同一文本框内其他组件的内部组件
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome 104.0.5112.101可复制演示链接 https://jsfiddle.net/7cLr0xt2/3/描述一下那个虫子 如何复现这个漏洞? 不知为何,我无法在上面链接的小提琴里重现...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
GrapesJS DevTools: A Developer Panel Inside Your Editor
If you've ever debugged GrapesJS with console.log(editor.getSelected()) and a dozen throwaway event listeners — this post is for you.
教程
How We Built Composeit in Record Time Using GrapesJS Shadcn
Bypass foundational builder boilerplate and focus on what truly matters.
教程
Ship to Production Faster: What’s New in GrapesJS Shadcn
Supercharge your page builder! GrapesJS Shadcn adds live drag previews, rich text / commands, dynamic data, and canvas presets to ship to prod faster.
浏览插件分类
直接跳转到市场上的插件分类页面。