Issue #2067💬 RespondidoAbierto el 6 de junio de 2019por megargReacciones 0

No puede referenciar otra biblioteca desde un componente personalizado

Respuesta rápidapor megarg

$ nodo -v v10.15.3 $ npx nodo-sass -v node-sass 4.12.0 (Envoltorio) [JavaScript] libsass 3.5.4 (compilador Sass) [C/C++] El sistema operativo es: Windows 10

Lee la respuesta completa abajo ↓

Pregunta

Hola Artf, He estado intentando hacer esto todo el día y no funciona. No pude encontrar ningún ejemplo ni ninguna solución en mi búsqueda.

Aquí tienes una parte relevante de mi código en el "components.js" del plugin personalizado:

model: defaultModel.extend({
      Predeterminados: {
            .....
            alerta ('antes de si');
                    if (IncludeLibrary= false) {
                        alerta('jeje');
                        var script = document.createElement('script');
                        script.onload = initMySLider;
                        script.src = 'https://unpkg.com/formiojs@latest/dist/formio.full.min.js';
                        document.body.appendChild(script);
                    }
                    Formio.createForm(formEl, 'https://examples.form.io/example');

Estoy recibiendo un error de compilación que dice que "Formio" no está definido sin definición.

Ten en cuenta que el script al que me refiero arriba debería definir a Formio, pero de alguna manera no ocurre. Seguir sin grapesjs funciona bien, así que sé que el script externo funciona.

'''

<html> <head> <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'> <link rel='stylesheet' href='https://unpkg.com/formiojs@latest/dist/formio.full.min.css'> <script src='https://unpkg.com/formiojs@latest/dist/formio.full.min.js'></script> <script type='text/javascript'> window.onload = función() { Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example'); }; </script> </head> <body> <div id='formio'></div> </body> </html> '''

Respuestas (3)

megarg6 de junio de 2019

$ nodo -v v10.15.3

$ npx nodo-sass -v node-sass 4.12.0 (Envoltorio) [JavaScript] libsass 3.5.4 (compilador Sass) [C/C++]

El sistema operativo es: Windows 10

artf13 de junio de 2019

No puedes usar 'Formio' si aún no está definido, supongo que usas el código de abajo para cargarlo '''js var script = document.createElement('script'); script.onload = initMySLider; script.src = 'https://unpkg.com/formiojs@latest/dist/formio.full.min.js'; document.body.appendChild(script);

Pero como cargar un script es una operación asincrónica, tienes que esperar, así que la parte de 'script.onload' que has commetido necesariamente...
'''js
script.onload = () => {
	Formio.createForm(formEl, 'https://examples.form.io/example');
}
megarg18 de junio de 2019

Hola Artf Gracias por tu respuesta. El problema básico es que el evento "script.onload" no se activa en Chrome. También probé "eventListener" pero tampoco se activa en Chrome para script. Dispara para "ventana" pero no para "script". ¿Hay alguna otra idea para resolver este problema?

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 →

Explorar categorías de plugins

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