问题 #3413💬 已回答提出于 2021年4月26日作者 theSC0RP0 个反应

添加内联脚本和更新旧事件

快速解答作者 theSC0RP

我尝试按照以下步骤更新内联脚本:获取iframe文档:“iframeDoc = 编辑器。”Canvas.getDocument()'获取文档正文的内HTML格式:“iframeDocBodyHtml = iframeDoc.body.innerHTML”替换正文的内HTML:'iframeDoc.body.innerHTML = iframeDocBodyHtml'重新附加内联脚本 这样做会导致内置的 Grapesjs 事件丢失,比如悬停或组件选择(这很明显,因为所有事件都丢失了)。有没有办法重新连接这些葡萄事件? 我也尝试过“编辑”。Canvas.toggleFramesEvents(1)',但并没有帮助。

阅读下方完整回答 ↓

问题

在这种情况下,我建议你访问iframe的文档,手动添加内联脚本(要获取文档,请使用'editor.“。Canvas.getDocument()')

_Originally由@artf在 https://github.com/artf/grapesjs/issues/2012#issuecomment-496304498_发布

嘿,@artf,我正在看#2012号,有些疑问。 如果脚本发生了更改,比如点击时的提醒消息。然后会加入多个事件。如何移除旧事件并添加新事件(无需保存和重新加载)。 一种方法是刷新iframe,但这会导致所有事件丢失(甚至是预定义的)。 你建议怎么做?

回答(4)

theSC0RP2021年4月27日

我尝试按照以下步骤更新内联脚本:获取iframe文档:“iframeDoc = 编辑器。”Canvas.getDocument()'获取文档正文的内HTML格式:“iframeDocBodyHtml = iframeDoc.body.innerHTML”替换正文的内HTML:'iframeDoc.body.innerHTML = iframeDocBodyHtml'重新附加内联脚本 这样做会导致内置的 Grapesjs 事件丢失,比如悬停或组件选择(这很明显,因为所有事件都丢失了)。有没有办法重新连接这些葡萄事件? 我也尝试过“编辑”。Canvas.toggleFramesEvents(1)...

theSC0RP2021年4月28日

我尝试通过写“editor.trigger('core:component-select')”来添加select和悬停事件,但也没用,而且执行“editor.runCommand('core:component-select')”会出错。 我是不是漏掉了什么?

artf2021年5月4日

嗯,我觉得添加一个简单的强制重渲染iframe的方法(虽然不常见,但在某些情况下肯定有用)应该不错。不幸的是,目前你应该尝试使用私密方法,检查一切是否如预期,确认后我很乐意为类似“frame.trigger('rerender')”添加监听器。 现在我建议你试试类似的做法 “''js 看看画面的实际视角 const frameView = 编辑器。Canvas.getFrame().view; 一旦移除frameView,我们就必须重新渲染该帧 包装视图(包含工具栏和框架本身等不同元素)。 const frameWrapView = frameView.config.frameWrapVie...

ClaudeCode2026年5月17日

谢谢你举报,@theSC0RP。 关于添加内联脚本和更新旧事件的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命周期 editor.on('component:mount', (c) => console.log('c...

相关问答

通过相似的问题讨论继续研究。

问题 #3668

移动/缩放后无法重置画布

警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可...

4 个回答更新于 2021年8月13日

问题 #3405

专长:在块状物落入画布前,需要挂钩的事件

警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可...

4 个回答更新于 2021年5月4日

问题 #3175

选择和激活RTE在程序化移除组件时未被清除

版本: 0.16.30 你能重现演示中的bug吗? [x] 是的 [ ] 不 繁殖步骤:在演示画布中选择文本组件选择框和RTE出现打开控制台执行 'editor.setComponents('');'组件被移除,但选择框和RTE仍然存在(见附图) 预期的行为是什么? 当程序性移...

2 个回答更新于 2020年12月30日

问题 #3458

专长:添加自定义块(比如 iframe),并像图片一样自定义,比如双击打开素材选项,在自定义 iframe 块中打开视频链接选项

警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可...

1 个回答更新于 2021年5月16日

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。