Botón de panel personalizado que activa/deshabilita dinámicamente los scripts de usuario
Puedes cambiarlo así: 'editor.getConfig().allowScripts = ...'
Lee la respuesta completa abajo ↓Pregunta
Hola y gracias por compartir un proyecto tan bueno. Estoy intentando personalizar algunas cosas en el editor, pero tengo algunas preguntas que agradecería que pudieran aclararse. Recientemente creé un botón de panel para cambiar el editor entre los modos absoluto y predeterminado y funciona sin ningún problema.
cmmd.add('change_mode', {
run: function(editor) {
editor.getModel().set('dmode', 'absoluto');
},
stop: function(editor) {
editor.getModel().set('dmode', 'default');
},
});
pnm.addButton('options', [{
claseNombre: 'fa fa-mano-rock-o',
Comandante: 'change_mode',
atributos: {
título: 'Modo de arrastre'
}
}]);
Pero cuando intento el mismo método (prácticamente el mismo código) para crear otro botón de panel que permita a los usuarios activar/desactivar scripts en el editor (allowScripts: 0 o 1).
cmmd.add('allowScripts', {
run: function(editor) {
editor.getModel().set('allowScripts', 1);
},
stop: function(editor) {
editor.getModel().set('allowScripts', 0);
},
});
pnm.addButton('options', [{
claseNombre: 'fa fa-terminal',
comando: 'permiteScripts',
atributos: {
título: 'Permitir guiones'
}
}]);
Veo que esto cambia el valor a través de la función 'editor.getModel().attributes.allowScripts', pero en la práctica no funciona. Deberíamos recibir una alerta cuando se pulsa el botón y el botón de Permitir el guion está activo. Pero solo si inicializamos el editor con '... allowScripts: 1...' podemos ver la alerta, pero no se desactiva con el botón del panel personalizado. ¿Me estoy perdiendo algo aquí? Aquí tienes una demostración del problema con CodePen: https://codepen.io/RJCAM/pen/xxZbNLw
Por cierto: Este código es solo una prueba, después de hacerlo lo que realmente quiero es permitir scripts de usuario solo en modo vista previa y no en modo editor.
Respuestas (3)
Puedes cambiarlo así: 'editor.getConfig().allowScripts = ...'
AllowScripts es para habilitar el análisis de JS; una vez insertado el script, se ejecuta, así que no puedes eliminarlo (una forma sería acceder al contexto del iframe y hacer cambios manualmente).
Gracias por la respuesta @artf . Aquí está el problema: el código que me das cambia el valor pero sigue sin funcionar como he descrito antes. En la demo que comparto (https://codepen.io/RJCAM/pen/xxZbNLw) tengo un botón que muestra una alerta al hacer clic.
Comportamiento esperado:
Cuando se desactiva el botón AllowScripts
! imagen --> this button
la configuración inicial del editor cambia los allowScripts a 0 Y cuando se pulsa el botón dentro del lienzo, NO debería ejecutar el script del botón ni mostrar la alerta.
Comportamiento actual
Cuando se desactiva el botón AllowScripts
! imagen --> this button
la configuración inicial del editor cambia los allowScripts a 0 PERO cuando se pulsa el botón dentro del lienzo, el editor SIGUE ejecutando el script del botón y SIGUE mostrando la alerta.
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #2972
HAZAÑA: Desactivar los scripts en el lienzo
Hola, antes que nada, gracias por una herramienta tan estupenda. En mi proyecto me encontré con el problema de que tengo que desactivar los...
Issue #2297
[Pregunta] Añade un script usando arrastrar y soltar que añadirá elementos dinámicamente
Hola. Gracias por este gran proyecto. Lo estoy usando en uno de mis proyectos y necesito ayuda. 1- Tengo un elemento de bloque con un scrip...
Issue #2312
[PREGUNTA] - Más control sobre los botones del panel, botones dinámicos del panel
Hola, Estoy intentando implementar varios botones dinámicos más para el panel, por ejemplo, un botón de guardado que, dependiendo de alguna...
Issue #2772
[Pregunta]: cargando scripts/css en el lienzo dependiendo de los rasgos
Hola. Antes que nada, gracias por esta herramienta tan dulce. Lo que necesito es cargar archivos JS o CSS en el lienzo dependiendo de los r...
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 →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.