Issue #5689Opened February 20, 2024by mitcht0 reactions

BUG: <> is introduced at the beginning editor.getHtml()

Question

GrapesJS version

  • I confirm to use the latest version of GrapesJS

What browser are you using?

Chrome Version 121.0.6167.185 (Official Build) (64-bit)

Reproducible demo link

https://jsfiddle.net/ja50kzne/4/

Describe the bug

How to reproduce the bug?

  1. I had a webpage from a previous version of grapesJS that loads into grapes correctly. You can see this in the fiddle. The latest version of GrapesJS "created" the JSON seen in the fiddle. I did not manipulate it.
  2. Notice that grapesJS does load, no errors in the console.
  3. When performing editor.getHtml (for db storage), I see that there is an empty element <> being introduced
  4. Note the console.log

What is the expected behavior? I expect to not see <> at the start of the string from editor.getHtml()

What is the current behavior? I see <> upon using .editor.getHtml()

I want to reiterate that I have not messed with the JSON. If there is something in there, it was generated by a previous version of grapesJS.

If is necessary to execute some code in order to reproduce the bug, paste it here below:

See fiddle https://jsfiddle.net/ja50kzne/4/

Code of Conduct

  • I agree to follow this project's Code of Conduct

Answers (3)

mitchtFebruary 20, 20240 reactions

I whittled the json down a quite a bit, and noticed there is some possibly invalid JSON being generated as output?

"components":[
                     {
                        "name":"Row",
                        "droppable":".cell",
                        "resizable":{
                           "tl":0,
                           "tc":0,
                           "tr":0,
                           "cl":0,
                           "cr":0,
                           "bl":0,
                           "br":0,
                           "minDim":1
                        },
                        "classes":[
                           "row"
                        ],
                        "attributes":{
                           "id":"ik4zj"
                        }
                     },
                     {
                        "type":"text",
                        "content":"<p style=\\""text-align":"center;\\""><em>With special appreciation for our <a href=\\""https":" target=\\""_blank\\"">Major Sponsors</a>:</em></p>\\n",
                        "attributes":{
                           "id":"in5ko"
                        }
                     }
                  ]

Its like the introduction of the escaped double quotes is off slightly. JSON.stringify and JSON.parse don't seem to care about it, but theres something going on.

artfFebruary 21, 20240 reactions

The root component of the page should be a wrapper, in your case is a textnode (eg. this might break a lot of stuff), with an empty tagName (the reason behind <>) and for some reason content: "undefined"(?) <img width="377" alt="Screenshot 2024-02-22 at 00 44 33" src="https://github.com/GrapesJS/grapesjs/assets/11614725/0e76b02e-097b-463f-a921-33250850e3f2"> I wouldn't even expect it to load but the editor is making some slight enforcements on the root component but type and tagName are extendable so can not be enforced.

Can't really help here, I can only suggest updating the JSON manually or via script. This doesn't seem to be a behavior of any previous version, so might also be related to some custom code.

mitchtFebruary 21, 20240 reactions

This is what was coming out of Grapes 0.18.4, therefor it was generated by grapes. I would expect if content was "undefined", grapes would either strip it or ignore it. For now i'm just stripping the <> out on my end, but I thought I'd just share it with you.

Related Questions and Answers

Continue research with similar issue discussions.

Paid Plugins That Match This Issue

Curated by issue keywords and label relevance to help you ship faster.

View all plugins

Loading paid plugin recommendations...

Browse Plugin Categories

Jump directly to plugin category pages on the marketplace.