¿Cómo configurar el src de la etiqueta de vídeo en dinámica?
Creo que tengo algo así hecho con un componente personalizado. Quizá ayude
Lee la respuesta completa abajo ↓Pregunta
Hola @artf,
Hola, tengo la etiqueta de vídeo y el botón de arrastrar y soltar desde blockmanager. Al hacer clic en el botón, necesito cambiar la URL a src. Pero no funciona, por favor, guíame.
editor. BlockManager.add("html/video", { Etiqueta: '<div>
<img src="../.../../Images/SiteBuilder/video.svg"/>
<div class="mi-etiqueta-bloque">Vídeo</div>
',</div>
categoría: 'Controles de la interfaz',
tabulación: 'Controles de la interfaz',
id: 'Controles de la interfaz',
contenido: '<video id="video1" src="..../../../Images/Jotun/Media21-1.m4v"id="TestVideo" controles type="video/mp4">',
});
Evento de botones:
va url = ".. /.. /test.mp4";
$("#video1").attr('src', URL);
No se aplica, dime cómo se puede establecer de otra manera.Respuestas (4)
Creo que tengo algo así hecho con un componente personalizado. Quizá ayude
"usar estricto";
const videowithupload = (editor) => {
editor. DomComponents.addType("videowithupload", {
isComponent: (el) => {
console.debug(el);
// },
modelo: {
Predeterminados: {
etiquetaNombre: 'vídeo',
reproducción automática: Cierto,
LOOP: Cierto,
Silenciado: Cierto,
Controles: falso,
Cartel: "poster.png",
src: "",
arrastrable: falso,
removible: falso,
copiable: falso,
redimensionable: falso,
estilable: [],
Rasgos: []
},
init() {
console.debug("vídeo - modelo - init");
},
updated(property, value) {
consola.debug(propiedad);
console.debug(value);
console.debug(prevValue);
si (propiedad === "src")
this.set("src", valor);
}
},
Vista: {
eventos: {
dblclick: "onActive"
},
init() {
console.debug("vídeo - ver - init");
const { modelo } = esto;
props const = [
'bucle',
'reproducción automática',
'controles',
'color',
'rel',
'modestbranding',
'cartel'
];
eventos const = props.map(p => 'change:${p}').join(' ');
this.listenTo(model, 'change:src', this.updateSrc);
this.listenTo(modelo, eventos, this.updateVideo);
},
onRender() {
console.debug("vídeo - ver - onRender");
this.updateVideo();
},
updateVideo(){
const { model, el } = this;
el.loop = model.get('loop');
el.autoplay = model.get('autoplay');
el.controls = model.get('controls');
el.poster = model.get('cartel');
},
updateSrc() {
console.debug("vídeo - ver - updateSrc");
const { model, el } = this;
si (!el) regresa;
Sea src = model.get('src');
el.src = src;
},
onActive(e) {
console.debug("vídeo - ver - onActive");
editor.runCommand('open-assets', {
Objetivo: esto.modelo,
Tipos: ['Vídeos'],
aceptar: 'vídeo/*',
onSelect() {
console.debug("vídeo - subido - onSelect")
editor. Modal.close();
editor. AssetManager.setTarget(null);
}
});
e.stopPropagation();
}
},
});
}
exportar vídeo predeterminado con subida;
Si solo necesitas actualizar el contenido del bloque (por ejemplo, el cambio se aplicará a bloques nuevos arrastrados), puedes cambiarlo de esta manera: '''js bloque const = editor. BlockManager.get('html/vídeo'); block.set('content', '<vídeo ...>')
si necesitas cambiar Componentes en el lienzo, te recomendaría leer más en detalle [Componentes](https://grapesjs.com/docs/modules/Components.html)
Gracias @artf y stf1981 por vuestra respuesta. De hecho, arrastro y suelto varios vídeos con el atributo generado de número aleatorio a id. En este caso, ¿cómo actualizar el vídeo seleccionado específico de SRC?
No me han fallado la actualización src.
Gracias por informar de esto, @san-123.
Buena pregunta sobre ¿Cómo configurar el src de la etiqueta de vídeo en dinámica?. El enfoque recomendado con GrapesJS es usar la API orientada a eventos.
Empieza aquí:
- Consulta la documentación de GrapesJS de tu módulo específico
- Busca el método del oyente de eventos 'on()'
- 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.
Issue #3631
¿Cómo cargar contenido dinámico en el archivo HTML final?
Busqué por todas partes, incluida la sección de problemas, y probé algunas cosas. Pero no tengo muy claro cómo cargar contenido dinámico en...
Issue #3313
Se requieren muchos clics para que el texto sea editable, ¿podemos hacer que el campo de texto sea editable con un solo clic?
ADVERTENCIA LEE y SIGUE los siguientes 3 pasos, luego ELIMÍNALOS antes de publicar el númeroSeguir las Directrices de CONTRIBUCIÓN https://...
Issue #3490
Las imágenes grandes hacen que el área del editor de contenido sea inaccesible
Hola, Por ejemplo, si añades un bloque de 3 columnas a una página y tratas de arrastrar una imagen muy amplia a cada columna, el contenido...
Issue #3589
El almacenamiento automático no funciona al refrescar la página
Hola, primero quiero decir que este proyecto es increíble, ¡gracias! Usé código del ejemplo de GrapeJS Demo, y añadí sus datos de guardar y...
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.
Tutorial
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
Tutorial
Big Updates: TinyMCE 8 and Placeholder 2.0 for GrapesJS
In May we shipped major updates to two of our most popular GrapesJS plugins — TinyMCE Inline Text Editor and Placeholder.
Tutorial
Find the Right GrapesJS Plugin in Seconds: Smarter Discovery Is Live
We're shipping a set of discovery upgrades. New label filters, a proper compatibility switch for GrapesJS vs Studio, one-click and a smarter sort bar.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.