/**
* @file setup.js - Funciones para configurar un reproductor sin
* Interacción del usuario basada en el "atributo" de configuración de datos de la etiqueta de video.
*
* Configuración de @módulo
* /
importar * como Dom desde './utils/dom';
importar documento desde 'global/document';
importar ventana desde 'global/window';
let _windowLoaded = falso;
vamos videojs;
/**
* Configure cualquier etiqueta que tenga un "atributo" de configuración de datos cuando se inicie el reproductor.
* /
const autoConfiguración = función () {
si (videojs.options.autoSetup === falso) {
devolver;
}
const vids = Array.prototype.slice.call(document.getElementsByTagName('video'));
const audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));
const divs = Array.prototype.slice.call(document.getElementsByTagName('video-js'));
const mediaEls = vids.concat(audios, divs);
// Comprobar si existe algún elemento multimedia
si (mediaEls && mediaEls.longitud > 0) {
for (sea i = 0, e = mediaEls.length; i < mi; i++) {
const mediaEl = mediaEls[i];
// Comprueba si el elemento existe, tiene la función getAttribute.
si (mediaEl && mediaEl.getAttribute) {
// Asegúrese de que este reproductor no se haya configurado aún.
if (mediaEl.jugador === indefinido) {
const opciones = mediaEl.getAttribute('data-setup');
// Comprobar si existe el atributo de configuración de datos.
// Solo configuramos automáticamente si agregaron el atributo de configuración de datos.
if (opciones! == nulo) {
// Crea una nueva instancia de video.js.
videojs(mediaEl);
}
}
// Si getAttribute no está definido, debemos esperar al DOM.
} else {
tiempo de espera de configuración automática (1);
romper;
}
}
// No se encontraron videos, así que siga repitiendo a menos que la página termine de cargarse.
} más si (!_windowLoaded) {
tiempo de espera de configuración automática (1);
}
};
/**
* Espere hasta que se cargue la página antes de ejecutar la configuración automática. Esto será llamado en
* autoSetup si `hasLoaded` devuelve falso.
*
* @param {número} espera
* Cuanto tiempo esperar en ms
*
* @param {módulo:videojs} [vjs]
* La función de biblioteca videojs
* /
function autoSetupTimeout(esperar, vjs) {
// Proteger contra roturas en entornos sin navegador
if (!Dom.isReal()) {
devolver;
}
si (vjs) {
videojs = vjs;
}
ventana.setTimeout(autoconfiguración, espera);
}
/**
* Se utiliza para establecer el seguimiento interno del estado de ventana cargada en verdadero.
*
* @privado
* /
función establecerVentanaCargada() {
_windowLoaded = verdadero;
ventana.removeEventListener('load', setWindowLoaded);
}
if (Dom.isReal()) {
if (document.readyState === 'completo') {
establecerVentanaCargada();
} else {
/**
* Escuche el evento de carga en la ventana y establezca _windowLoaded en verdadero.
*
* Usamos un detector de eventos estándar aquí para evitar incrementar el GUID
* antes de que se creen jugadores.
*
* @escucha cargar
* /
ventana.addEventListener('cargar', setWindowLoaded);
}
}
/**
* comprobar si la ventana se ha cargado
* /
const hasLoaded = function() {
volver _windowLoaded;
};
exportar {autoSetup, autoSetupTimeout, hasLoaded};