Issue #5460💬 RespondidoAbierto el 12 de octubre de 2023por mapsmarketingReacciones 1

Cargando 'component' y 'styles' desde 'pageManager'

Respuesta rápidapor mapsmarketing1

Una cosa molesta es que el editor está preinstalando los estilos predeterminados que aparecen a continuación, que al guardar los estilos tienen numerosos duplicados: Edito: Mirando la documentación finalmente conseguí encontrar 'protectedCss' y cuando está en vacío detiene que los estilos estén prepuestos.

Lee la respuesta completa abajo ↓

Pregunta

Versión GrapesJS

  • Confirmo que se debe usar la última versión de GrapesJS

¿Qué navegador usas?

Chrome v117.0.5938.149

Enlace de demo reproducible

https://jsfiddle.net/9oLrsvya/

Describe el bicho

¿Cómo reproducir el bicho?

  1. Por favor, consulte el objeto 'pageManager' en el jsfiddle

¿Cuál es el comportamiento esperado? Consulta la siguiente documentación: https://grapesjs.com/docs/api/pages.html#pages

Debería cargar correctamente el 'component' y el 'style' desde el 'pageManager' en el editor.

¿Cuál es el comportamiento actual? Cuando revisas el código mediante "ver código" en el editor, notarás que ni el HTML exacto ni los estilos se han cargado correctamente. La etiqueta 'cuerpo' no conserva la etiqueta 'ID' que el editor añade al aplicar cualquier tipo de estilo, lo que significa que el estilo no funcionará. Y el CSS no se ha cargado correctamente en absoluto.


Si es un error confirmado, estaré encantado de intentar arreglarlo. Sería genial saber más o menos desde dónde se cargan los 'componentes' y los 'estilos', ya que no conozco bien los archivos del proyecto.

Código de conducta

  • Acepto seguir el Código de Conducta de este proyecto

Respuestas (4)

mapsmarketing13 de octubre de 2023

Una cosa molesta es que el editor está preinstalando los estilos predeterminados que aparecen a continuación, que al guardar los estilos tienen numerosos duplicados:

* {
  Tamaño de caja: caja de borde;
}
cuerpo {
  marje: 0;
}

Edito: Mirando la documentación finalmente conseguí encontrar 'protectedCss' y cuando está en vacío detiene que los estilos estén prepuestos.

artf12 de octubre de 2023

Hola @mapsmarketing actualmente GrapesJS no puede importar correctamente documentos HTML como cadena, así que el analizador salta elementos como 'html', 'head', 'body' y solo devuelve lo que está analizado dentro del 'body'; una solución que podrías hacer ahora mismo es pasar un componente como objeto '''js component: { Atributos: { ID: 'IGNT' }, componentes: '<div class="mi-el">¡Mundo de prueba!</div>', },

En cuanto a los estilos, es el problema del analizador CSSOM predeterminado del navegador, por favor consulta este [plugin](https://github.com/GrapesJS/parser-postcss)
mapsmarketing13 de octubre de 2023

Hola @artf,

He encontrado una forma de conseguir correctamente los atributos del 'cuerpo' junto con los estilos guardados mediante el siguiente método:

const pageManager = editor. Páginas;
const page = pageManager.get('my-page-id').toJSON();
const component = pageManager.get('my-page-id').getMainComponent();
page.styles = editor.getCss({ component });

He notado que tu Page.toJSON muestra todo lo de la página especificada. Sin embargo, no parece que los 'estilos' sean correctamente (siempre está configurado como indefinido para mí), así que recupero los estilos de la página activa a través del editor y sobrescribo los que están en JSON. Creo que los 'estilos' no se establecen debido a la comprobación de 'if (!props.frames)' que tienes en Page.ts

A continuación se muestra un ejemplo de cómo estoy cargando en HTML. Estoy usando 'frames' porque 'component' no funciona con la estructura proporcionada. Estoy cargando los estilos sin usar el plugin de analizador y parece que se carga sin problemas.

const pageJSON = {...}; Contiene los 'marcos' y 'estilos'
const editor = grapesjs.init({
    pageManager: {
        páginas: [
            {
                id: 'mi-id-página',
                frames: pageJSON.frames,
                estilos: pageJSON.styles,
            }
        ]
    }
});

También noté que la función PageManager.select no actualiza los estilos al cambiar entre páginas, lo que me obliga a ejecutar: 'editor.setStyle(pageJSON.styles);'

ClaudeCode17 de mayo de 2026

Gracias por informar de esto, @mapsmarketing.

Buena pregunta sobre Cargar 'component' y 'styles' desde 'pageManager'. El enfoque recomendado con StyleManager es usar la API orientada a eventos.

Empieza aquí:

  1. Consulta la documentación de GrapesJS de tu módulo específico
  2. Busca el método del oyente de eventos 'on()'
  3. La mayoría de las operaciones se pueden realizar escuchando eventos del editor y de los componentes

Patrones comunes: '''javascript Prestad atención a los cambios editor.on('Change', () => console.log('Something Changed'));

Ciclo de vida de los componentes editor.on('component:mount', (c) => console.log('component ready', c)); editor.on('component:update', (c) => console.log('component updated', c));


**Si sigues atascado:**
- Compartir una reproducción mínima de CodeSandbox
- Incluye lo que ya has probado
- Menciona tu versión GrapesJS
- ¡La comunidad está aquí para ayudar!

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.

Explora plugins gratuitos →
Opción premium

Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.

Explora plugins premium →

Tutoriales relacionados

Guías detalladas sobre el mismo tema.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.