Etiqueta de script crear error JSON
https://stackoverflow.com/questions/28259389/how-to-put-script-in-a-javascript-string
Lee la respuesta completa abajo ↓Pregunta
Hola. Estoy creando bloques en Grapesjs y necesito usar JS en ellos para el efecto de hover y más... Todo funciona bien para la creación, almacenamiento, carga y el estilo de cada bloque. Tengo un problema cuando añado la <script></script> etiqueta a mi bloque. Funciona bien cuando arrastro el bloque por primera vez, pero cuando guardo y vuelvo a cargar la página (es decir, cargo lo que guardé en la base de datos) tengo un error JSON...
Aquí está mi código:
'''js editor. BlockManager.add('block-category', { label: '<div class="gjs-fonts gjs-f-b1 gjs-one-bg gjs-four-color-h"><div class="gjs-block-label">Bloc Catégorie</div></div>', Contenido: '<style> .mdc_category_img_large { ancho: 100%; } .mdc_category_img_large img { ancho: 100%; } .mdc_category_content_container { pantalla: flex; dirección flexible: columna; alinear-ítems: centro; márgene-superior: 15px; } .mdc_category_img_medium img { Ancho máximo: 100%; } .mdc_category_content { márgene-superior: 15px; margen inferior: 15px; pantalla: flex; Alinear-elementos: Arranque flexible; dirección flexible: columna; } .mdc_category_title { transformada de texto: mayúsculas; Peso-fuente: negrita; color: #ffb8b1; tamaño de fuente: 16px; } .mdc_category_title tramo { pantalla: bloqueo; } .mdc_category_text { margen arriba: 5px; } .mdc_category_btn_container { ancho: 80%; text-align: center; márgene-superior: 15px; } .mdc_category_btn { color: #000; Color de fondo: #ffb8b1; decoración de texto: ninguna; Radio de frontera: 50px; acolchado: 10px 20px; } .mdc_category_large_hover_content { pantalla: ninguna; borde: sólido 1px #a8c1b3; }
.mdc_active { pantalla: flex; } .mdc_category_img_large:pasa el cursor > .mdc_arrow_container > .mdc_arrow.mdc_right::before { transformar: rotar (135 grados); margen: -3px 0 0 -5px; } .mdc_category_img_large:pasa el cursor > .mdc_arrow_container > .mdc_arrow.mdc_right::after { ancho: 0; Altura: 15px; Ancho de borde: 0 2px 0 0; margen-izquierda: -1px; margen arriba: -8px; } .mdc_arrow_container { posición: absoluta; derecha: 0; abajo: 0; } .mdc_arrow { ancho: 35px; Altura: 35px; Margen: 20px; pantalla: bloque en línea; posición: relativa; } .mdc_arrow::antes { Contenido: ''; pantalla: bloqueo; ancho: 10px; Altura: 10px; arriba: 50%; izquierda: 50%; Estilo de Borde: Sólido; color del borde: #00bab9; Ancho de borde: 2px 2px 0 0; posición: absoluta; Origen transformado: 50% 50%; } .mdc_arrow.mdc_right::before { transformar: rotar (45 grados); margen: -6px 0 0 -4px; transición: transformar 0,1s; } .mdc_arrow::después { Contenido: ''; pantalla: bloqueo; arriba: 50%; izquierda: 50%; Estilo de Borde: Sólido; color del borde: #00bab9; posición: absoluta; Origen transformado: 50% 50%; } .mdc_arrow.mdc_right::after { Ancho: 15px; altura: 0; Ancho de borde: 2px 0 0 0; margen izquierda: -10px; Margen arriba: -2px; transición: 0,1s; } .mdc_arrow.mdc_arrow_circle { antecedentes: RGBA (255, 255, 255, 1); borde: sólido 2px #00bab9; Radio de frontera: 50px; } .mdc_category_large_hover_content_item { pantalla: flex; alinear-ítems: centro; acolchado: 10px 20px; } .mdc_category_large_hover_content_item_price { pantalla: bloqueo; } .mdc_category_large_hover_content_item_values { ancho: 50%; margen izquierda: 50px; } @media pantalla y (ancho máximo: 767px) { .mdc_category { relleno: 0 30px; } .mdc_category_btn_container { ancho: 100%; } .mdc_category_large_hover_content { Envoltura flexible: envolvente; } } @media pantalla y (ancho-mínimo: 768px){ .mdc_category_content_container { dirección flexible: fila; Alinear-elementos: Arranque flexible; } .mdc_category_content { ancho: 50%; margen a izquierda: 30px; } .mdc_category_img_medium { ancho: 50%; } .mdc_category_title { tamaño de fuente: 18px; } .mdc_category_text { ancho: 80%; } .mdc_category { relleno-izquierda: 30px; relleno a la derecha: 30px; } } </style> <div class="mdc_category" data-gjs-draggable="#wrapper"> <div class="mdc_category_img_large"> <img src="/modules/mdthematics/views/templates/front/category_large.png" /> </div> <div class="mdc_category_large_hover_content"> <div class="mdc_category_large_hover_content_item"> <img src="/modules/mdthematics/views/templates/front/mini-photo.png" /> <div class="mdc_category_large_hover_content_item_values"> <span class="mdc_category_large_hover_content_item_description">Chaise de cuisine assise et dossier en bois structure en métal - Snack Connubia</span> <span class="mdc_category_large_hover_content_item_price">À partir de 199<sup>€00</sup></span> </div> </div> <div class="mdc_category_large_hover_content_item"> <img src="/modules/mdthematics/views/templates/front/mini-photo.png" /> <div class="mdc_category_large_hover_content_item_values"> <span class="mdc_category_large_hover_content_item_description">Chaise de cuisine assise et dossier en bois structure en métal - Snack Connubia</span> <span class="mdc_category_large_hover_content_item_price">À partir de 199<sup>€00</sup></span> </div> </div> </div> <div class="mdc_category_content_container"> <div class="mdc_category_img_medium"> <img src="/modules/mdthematics/views/templates/front/category_medium.png" /> </div> <div class="mdc_category_content"> <span class="mdc_category_title">Une chaise de cuisine <span>fonctionnelle et pratique</span></span> <p class="mdc_category_text">La fabrication des chaises de cuisine évolue avec le temps. A l'heure actuelle, il n'est plus question de se contenter d'un meuble fonctionnel au look classique, on recherche l'esthétique. Afin de répondre à la demanda, il existe, désormais, un large choix de chaises de cuisine. Que vous souhaitiez des chaises de cuisine modernes, rétro ou contemporaines, elles ont chacune un charme fou.</p> <div class="mdc_category_btn_container"> <a class="mdc_category_btn" href="">Voir les chaises de cuisine</a> </div> </div> </div> <script> $(".mdc_category_img_large").hover(function () { $(".mdc_category_large_hover_content").addClass("mdc_active"); }, función () {}); $(".mdc_category_large_hover_content").mouseleave(function () { $(this).removeClass("mdc_active"); }); </script> ',</div> atributos: { título: '' } });
Aquí está mi error:
! [captura d ecran 2018-11-27 a 16 38 57](https://user-images.githubusercontent.com/23522379/49092755-f96a2500-f262-11e8-82b2-57b7aa61689b.png)
Más información: añadí la línea de allowScripts: true y parece que proviene del contenido gjs_components que guardé en la base de datos.
Gracias por la ayuda...
Respuestas (3)
Perdona, intenté seguir los consejos del post de stackoverflow pero nada funciona... Aun así, me salió ese error aunque salí del / de la </script> etiqueta
Este hilo se ha bloqueado automáticamente porque no ha habido actividad reciente desde que se cerró. Por favor, abre un nuevo problema para bugs relacionados.
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #846
Error cuando intenté añadir filas a una tabla
Hola a todos Estoy empezando a usar Grapesjs y tengo un problema, estoy intentando añadir 3 comandos nuevos para crear tablas, añadir filas...
Issue #1906
Componentes y Js - Plantilla de carga
Hola, Tengo un componente al que se le conecta un JS. Todo se crea usando el JS. Cuando arrastro y suelto mi bloque por primera vez, el JS...
Issue #1566
Estilo predeterminado para bloques personalizados
Hola, estoy usando GrapesJS para un creador de páginas dentro de una web de Prestashop. La idea es establecer la plantilla predeterminada a...
Issue #543
Gestor de bloques en GrapesJS que no funciona para columnas
Hola, Mi instalación de GJS conecta todos los bloques por defecto. Cada bloque se arrastra bien en la página salvo todas las "columnas". es...
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.