Así que tengo una pregunta tan extraña y no sé si esto es posible, pero lo intentaré de todos modos.
Hemos implementado OneTrust, que es un proveedor de consentimiento de cookies de terceros y funciona muy bien y todo, pero tenemos un pequeño inconveniente que estamos tratando de resolver.
Así que dentro de la siguiente función:
toggleVideo: function (videoWrapper, src, cover, type, element) { var videoElement = video.buildVideo(src, type); // We build out video-player element videoWrapper.html(videoElement); // We define our variables let onetrust = window.OneTrust; let onetrust_obj = window.ONETRUST_MODULE; let target = videoWrapper.html(videoElement).children('iframe'); console.log(onetrust.Close()); // Now we wait and observe for a src attribute and then show the video. onetrust_obj.src_observer(target, function() { video.toggle_show(videoWrapper, cover); }); }, Tenemos un elemento <iframe> que cuando se hace clic en Reproducir, esperará a que se ejecute el consentimiento. El problema es que necesita "actualizar" OneTrust para que pueda cambiar el atributo data-src a src (Todo esto se maneja usando OneTrust JS , así que no tengo control).
console.log(onetrust.Close()); , funciona tal como se esperaba y reanuda la reproducción del video cuando se da el consentimiento, la desventaja es que genera un error en la consola . Si lo elimino, los videos no se reproducirán después de dar el consentimiento.onetrust.Close() ya que cerrará el banner.Mis preguntas :
onetrust.Close() (parece ser la única llamada que realmente activa el video para reproducirlo después) sin ejecutarlo realmente?¡Gracias a todos!
Extraño, puede ser un problema de condición de carrera, por lo que hacer que su código se ejecute en la siguiente iteración de procedimiento puede resolver el problema; esto se puede hacer agregando un setTimeout sin valor de temporizador.
setTimeout(() => { onetrust_obj.src_observer(target, function() { video.toggle_show(videoWrapper, cover); }); });Alternativamente, puede valer la pena profundizar en el método onetrust.Close() para ver si hay utilidades públicas que puedan ayudar a 'actualizar' el contexto en el que está trabajando.
Otra idea sería ver qué sucede después si vuelve a ejecutar el bloque de código onetrust_obj.src_observer .
EDITAR: me gustaría dejar en claro que solo estoy tratando de ayudar a resolver la depuración de esto, sin ver un entorno de trabajo es difícil ofrecer sugerencias 😄