Adding inline scripts and updating old events
我尝试按照以下步骤更新内联脚本:获取iframe文档: iframeDoc = editor.Canvas.getDocument()获取文档正文的内部HTML格式: iframeDocBodyHtml = iframeDoc.body.innerHTML替换正文的内部HTML: iframeDoc.body.innerHTML = iframeDocBodyHtml重新附加内联脚本 这样做会导致内置的 grapesjs 事件丢失,比如悬停或组件选择(这很明显,因为所有事件都丢失了)。有没有办法重新附加这些 grapesjs 事件? 我也试过 editor.Canvas.toggleFramesEvents(1) 但没用。
阅读下方完整回答 ↓问题
在这种情况下,我建议你访问iframe的文档,手动添加内联脚本(要获取文档,请使用'editor.“。Canvas.getDocument()')
_Originally由@artf在 https://github.com/artf/grapesjs/issues/2012#issuecomment-496304498_发布
嘿,@artf,我正在看#2012号,有些疑问。 如果脚本发生了更改,比如点击时的提醒消息。然后会加入多个事件。如何移除旧事件并添加新事件(无需保存和重新加载)。 一种方法是刷新iframe,但这会导致所有事件丢失(甚至是预定义的)。 你建议怎么做?
回答(4)
我尝试按照以下步骤更新内联脚本:获取iframe文档: iframeDoc = editor.Canvas.getDocument()获取文档正文的内部HTML格式: iframeDocBodyHtml = iframeDoc.body.innerHTML替换正文的内部HTML: iframeDoc.body.innerHTML = iframeDocBodyHtml重新附加内联脚本 这样做会导致内置的 grapesjs 事件丢失,比如悬停或组件选择(这很明显,因为所有事件都丢失了)。有没有办法重新附加这些 grapesjs 事件? 我也试过 editor.Canvas.toggleFram...
我尝试通过写“editor.trigger('core:component-select')”来添加select和悬停事件,但也没用,而且执行“editor.runCommand('core:component-select')”会出错。 我是不是漏掉了什么?
嗯,我觉得添加一个简单的强制重渲染iframe的方法(虽然不常见,但在某些情况下肯定有用)应该不错。不幸的是,目前你应该尝试使用私密方法,检查一切是否如预期,确认后我很乐意为类似“frame.trigger('rerender')”添加监听器。 现在我建议你试试类似的做法 “''js 看看画面的实际视角 const frameView = 编辑器。Canvas.getFrame().view; 一旦移除frameView,我们就必须重新渲染该帧 包装视图(包含工具栏和框架本身等不同元素)。 const frameWrapView = frameView.config.frameWrapVie...
谢谢你举报,@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
Cant Reset Canvas after Moving/scaling it
警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可...
问题 #3405
专长:在块状物落入画布前,需要挂钩的事件
警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可...
问题 #3175
选择和激活RTE在程序化移除组件时未被清除
版本: 0.16.30 你能重现演示中的bug吗? [x] 是的 [ ] 不 繁殖步骤:在演示画布中选择文本组件选择框和RTE出现打开控制台执行 'editor.setComponents('');'组件被移除,但选择框和RTE仍然存在(见附图) 预期的行为是什么? 当程序性移...
问题 #3458
专长:添加自定义块(比如 iframe),并像图片一样自定义,比如双击打开素材选项,在自定义 iframe 块中打开视频链接选项
警告 请阅读并遵循接下来的三步,然后在发布问题前删除它们遵守贡献指南 https://github.com/artf/grapesjs/blob/master/CONTRIBUTING.md先快速搜索一下,看看有没有人没开同样的问题所有相关陈述/问题都必须填写/回答,否则问题可...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
Introducing Search on GJS.Market
GJS.Market now has one search across everything we publish — plugins, articles, community questions, guides, authors and services. Press ⌘K from any page.
教程
GJS.Market Is Now Available for India 🇮🇳
GJS.Market is expanding its global presence with a dedicated experience for developers, agencies, SaaS companies, and digital creators in India
教程
如何在2026年用 GrapesJS 构建AI驱动的页面构建器
我们构建GJSDocs的经验——从简单的AI文本生成到结构化、上下文感知的视觉编辑
浏览插件分类
直接跳转到市场上的插件分类页面。