导入时旧组件脚本不会被删除。导致脚本重复
问题
葡萄JS版本
- 我确认使用最新版本的GrapesJS
你用的是什么浏览器?
Edge v120.0.2210.121
可复制演示链接
https://codepen.io/ashwinvalento/pen/jOJMPqx
描述一下那个虫子
如果我们设置了 'config.parser.optionsHtml.allowScripts: true',并用脚本创建组件,那么当我们用 'grapesjs-preset-webpage' 插件导入代码时,脚本标签会被重复。
如何复现这个漏洞?
在演示链接(https://codepen.io/ashwinvalento/pen/jOJMPqx)
- 将“重复脚本块”投放到画布上。(本组件有脚本)
- 点击导入代码选项。注意“重复脚本块”中只有一个脚本块
- 点击导入按钮。
- 再次点击导入代码选项,发现现在有两个区块。
预期的行为是什么? 点击导入时,之前导入组件的脚本应自动移除,并导入新代码
目前的行为是什么? 旧脚本不会被删除,而是添加新脚本,这会生成重复脚本。因此,组件脚本会多次执行
行为准则
- 我同意遵守本项目的行为准则
回答(3)
直接将 JS 导入为组件从来不可能,所以它被视为一个新的组件。
有没有办法识别现有组件的脚本并在导入时删除它们?我们无法移除所有脚本标签,因为需要保留手动添加的脚本。
谢谢你举报,@Ashwinvalento。 关于导入时旧组件脚本不会被删除的建议很棒。导致脚本重复出现!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“change:*”事件进行细致跟踪 构建一个插件,扩展编辑器并具备此功能 正式宣布: 如果此功能能惠及更多用户,考虑在 Gr...
相关问答
通过相似的问题讨论继续研究。
问题 #5334
在画布中选择自定义组件类型无法正常工作
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome、Opera、Edge 等 可复制演示链接 https://jsfiddle.net/crszh0jo/6/ 描述一下那个虫子 我正在尝试让它像这里描述的那样工作[[问题] Canva...
问题 #6086
无法读取未定义属性(读取“lastComponent”)和可调整大小的功能无法使用
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Edge v128可复现演示链接https://codesandbox.io/p/devbox/github/jdkcoder/cv-builderhttps://stackblitz.com/git...
问题 #6202
Javascript CDN 在 Grapejs Canvas 上无法使用
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 129 可复制演示链接 https://grapesjs.com/demo 描述一下那个虫子 const newEditor = grapesjs.init({ fromElement: true...
问题 #5563
脚本标签的属性正在画布上被移除。
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 最新版本的Chrome浏览器可复制演示链接 https://grapesjs.com/demo.html描述一下那个虫子 如何复现这个漏洞? 用这段代码用 grapesjs 渲染一个 html 字符串...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
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 to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
教程
Big Updates: TinyMCE 8 and Placeholder 2.0 for GrapesJS
In May we shipped major updates to two of our most popular GrapesJS plugins — TinyMCE Inline Text Editor and Placeholder.
浏览插件分类
直接跳转到市场上的插件分类页面。