Ignorar/evitar changeCount
Hola @santiph bueno, si el problema es 'onbeforeunload' puedes desactivarlo con 'noticeOnUnload' '''js grapesjs.init({ ... avisoOnUnload: falso }) ```
Lee la respuesta completa abajo ↓Pregunta
Debido a https://github.com/artf/grapesjs/issues/436, no puedo confiar en el método de carga remota de StorageManager para cargar una plantilla desde un endpoint REST, así que recurro a alternativas como 'editor.setComponents()' y 'editor.setStyle()' (que se usan dentro de un comando, así que 'grapesjs' y 'editor' están disponibles).
Desafortunadamente, esos métodos hacen que 'changesCount' aumente y activen el evento 'onbeforeunload' cuando nuestros usuarios intentan salir de la página web. Además, incluir frases como 'editor.editor.set('changesCount', 0)' en el comando es inútil, ya que changesCount se incrementa tan pronto como termina el comando (incluso después de completar run() y stop() execution).
¿Hay alguna forma de solucionar este problema? ¿O alguna forma de sobrescribir changesCount justo después de usar .setComponents()/.setStyles()?
Gracias. PD: En cuanto a https://github.com/artf/grapesjs/issues/436, trabajaré en una propuesta de refactorización para la biblioteca Fetch para que cumpla con REST. Espero poder apurarlo en algún momento de la semana que viene
Respuestas (3)
Hola @santiph bueno, si el problema es 'onbeforeunload' puedes desactivarlo con 'noticeOnUnload' '''js grapesjs.init({ ... avisoOnUnload: falso })
Hola @artf Necesito avisar al usuario de forma constante sobre cualquier cambio no guardado. Y sáltala cuando no haya nada nuevo que guardar: Cuando se crea una plantilla vacía nueva, justo después de guardar o después de cargar una plantilla, no debería aparecer ningún mensaje de confirmación.
Guardar el escenario a través de StorageManager funciona como se esperaba. La carga no, por desgracia. Al menos no cuando componentes, estilos, html, etc., se cargan a través de la API del editor, no del .load() de StorageManager.
Podría probarlo completamente con almacenamiento remoto: 'onbeforeunload' está desactivado, como era de esperar, al cerrar justo después de guardar. Desafortunadamente, todavía se muestra al cerrar justo después de cargar una nueva plantilla.
Después de un poco de depuración, cargar una nueva plantilla parece aumentar 'changesCount' a 1. (Carga 'changesCount' = 1. Carga 'changesCount' = 2. Carga 'changesCount' = 3.) ¿Cómo podría reiniciarse este contador si la razón del cambio de plantilla era cargar uno nuevo?
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #518
Cambia solo el cuerpo de los componentes, no el cuerpo de toda la página.
Hola @artf Como discutimos en el número #374. setComponents configurará el cuerpo y reemplazará todo el contenido presente en la página por...
Issue #767
Genera una nueva grapes.min.js después de hacer cambios en grapes.js
Hola a todos, feliz año nuevo, Actualmente estoy investigando GrapesJs para nuestro proyecto posterior. La pregunta es que he entrado en el...
Issue #1757
El gestor remoto de almacenamiento no funciona
Hola, Durante 2 días he estado peleando con el StorageManager. No pude cargar la plantilla desde un archivo remoto. Finalmente descubrí que...
Issue #436
RemoteStorage - Plantilla de carga utiliza POST
Estoy usando un módulo personalizado para guardar/cargar una plantilla con un servicio como este: El guardado es un módulo diferente y func...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
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 →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.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.