PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

问题 #6307💬 已回答提出于 2024年11月12日作者 maxming23330 个反应

MJML 组件 'tagUpdated' 将使“悬停”变得不可能

快速解答作者 GJS Helper

你遇到的问题是调用 MJML 组件时tagUpdated()导致其悬停功能失效并报错,原因在于 tagUpdated() 的设计与 MJML 组件在 GrapesJS内的渲染生命周期不匹配。 根本原因 GrapesJS 中的 tagUpdated() 方法主要用于将标准 GrapesJS 组件的 HTML 标签更改(例如,从div 变成 span)。该方法向组件视图(ComponentView)信号,其底层 DOM 元素的标签发生变化,可能会触发元素及其关联事件监听器的重新渲染或初始化。 然而,MJML组件的运作方式不同: MJML vs. HTML 标签: MJML 组件(如 mj-section、mj-column)其“标签”...

阅读下方完整回答 ↓

问题

GrapesJS 版本

  • 我确认使用最新版本 GrapesJS

你用的是什么浏览器?

130.0.6723.117

可复制演示链接

https://grapesjs.com/demo-mjml

描述一下那个虫子

如何复现这个漏洞?

  1. 随机选择一个组件,比如演示页面的第二个 mj-section

  2. 在编辑器中将该组件悬停(你可以看到它可以悬停)

  3. 找到该组件的ID,并执行 editor.Components.getById('iv19a').tagUpdated()

  4. 再次尝试悬停该组件,发现无法悬停。

预期的行为是什么?

没有报错,你可以继续悬停

目前的行为是什么?

错误会被报告且无法悬停 <img width=“668” alt=“image” src=“https://github.com/user-attachments/assets/11a28fd3-d0b4-47ce-9a3f-977639efc36d”>

行为准则

  • 我同意遵守本项目的行为准则

回答(1)

GJS Helper• 2026年5月17日

你遇到的问题是调用 MJML 组件时tagUpdated()导致其悬停功能失效并报错,原因在于 tagUpdated() 的设计与 MJML 组件在 GrapesJS内的渲染生命周期不匹配。 根本原因 GrapesJS 中的 tagUpdated() 方法主要用于将标准 GrapesJS 组件的 HTML 标签更改(例如,从div 变成 span)。该方法向组件视图(ComponentView)信号,其底层 DOM 元素的标签发生变化,可能会触发元素及其关联事件监听器的重新渲染或初始化。 然而,MJML组件的运作方式不同: MJML vs. HTML 标签: MJML 组件(如 mj-sec...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

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

全部教程 →

浏览插件分类

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