Id are added to <img/> on double click on it
The id seems to be added way before opening the asset manager :clone and run the projectadd an image on the index.html fileinspect this image element : there is the id in the dom element
Read full answer below βQuestion
Version:
0.16.37
Are you able to reproduce the bug from the demo?
[X] Yes [ ] No
What is the expected behavior?
It's about the GrapesJS-mjml plugin : this syntax doesn't accept id's on elements. But AssetsManager add ids to image elements. I would like to not add id attributes to <img> tags
Steps to reproduce
- clone and run the project
- add an image on the index.html file
- open the code viewer : no id
- double click on the image
- close the asset manager
- open the code viewer : an id has been added to the tag
You can find the GrapesJS-mjml issue here : https://github.com/artf/grapesjs-mjml/issues/179
Answers (4)
The id seems to be added way before opening the asset manager :
- clone and run the project
- add an image on the index.html file
- inspect this image element : there is the id in the dom element
Found a clue in /Users/thomaspopoff/Sites/grapesjs/src/code_manager/model/HtmlGenerator.js line 10, the opts.cleanId is always undefined. I don't know how to set it to true to remove auto-generated ids
Ok sorry for all my self-talk : there is an option opts.cleanId inside getHtml() function you can configure to remove auto-generated ids...
Thanks for reporting this, @ThomasPof.
The issue with id are added to <img/> on double click on it appears to be a race condition or state management timing problem. This typically happens when component lifecycle events and DOM modifications overlap, creating an inconsistent state.
What to try:
- Add a setTimeout wrapper to ensure the DOM has settled:
setTimeout(() => {
// your operation here
}, 0);
-
Check initialization order β make sure components are fully loaded before you interact with them
-
Use the editor's event system β listen to completion events:
editor.on('component:mount', (component) => {
// safe to interact with component here
});
Recommended next steps:
- Test with the latest GrapesJS version if you haven't
- Provide a minimal reproducible example (CodeSandbox) β this helps the team identify the root cause faster
- Include GrapesJS version, browser, and console errors in your report
Related Questions and Answers
Continue research with similar issue discussions.
Issue #3291
BUG (v0.16.41): the duplicate icon from the icon toolbar is modifying the original element too
Version: v0.16.41 Are you able to reproduce the bug from the demo? [ ] Yes What is the expected behavior? The elements duplicated not shoul...
Issue #3305
(v0.16.41) Button not set as active on click
Version: v0.16.41 Are you able to reproduce the bug from the demo? [ ] Yes [x] No What is the expected behavior? When I click on a button,...
Issue #3457
Custom trait input not working
Hi @artf ! Version: 0.17.3 Are you able to reproduce the bug from the demo?[ ] Yes[x] No What is the expected behavior? The input is create...
Issue #3731
Text element not able to be selected twice after extended with events
Version: 0.17.25 Are you able to reproduce the bug from the demo?[ ] Yes[x] No What is the expected behavior? Update a existing component o...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Check the open-source GrapesJS plugins on GitHub or run a quick search in our free catalog.
Browse free plugins βPremium plugins ship with support, regular updates, and production-ready features β save days of integration work.
Browse premium plugins βRelated tutorials
In-depth guides on the same topic.
Tutorial
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.
Tutorial
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.
Tutorial
Find the Right GrapesJS Plugin in Seconds: Smarter Discovery Is Live
We're shipping a set of discovery upgrades. New label filters, a proper compatibility switch for GrapesJS vs Studio, one-click and a smarter sort bar.
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.