/**
* @file setup.js - Funktionen zum Einrichten eines Players ohne
* Benutzerinteraktion basierend auf dem Daten-Setup-`Attribut` des Video-Tags.
*
* @module einrichten
* /
import * as Dom from './utils/dom';
dokument aus 'global/document' importieren;
import window from 'global/window';
sei _windowLoaded = falsch;
lass videojs;
/**
* Richten Sie alle Tags ein, die beim Start des Players ein `Data-Setup-Attribut` haben.
* /
const autoSetup = Funktion () {
wenn (videoJS.Options.AutoSetup === falsch) {
rückkehr;
}
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);
//Prüfe, ob Medienelemente existieren
if (MediaEls && MediaEls.length > 0) {
für (sei i = 0, e = MediaEls.length; i < e; i++) {
const mediaEL = MediaEls [i];
//Prüfe, ob das Element existiert, hat die getAttribute-Funktion.
wenn (MediaEL && MediaEL.getAttribute) {
//Vergewissere dich, dass dieser Player nicht bereits eingerichtet wurde.
if (Mediael.Player === undefiniert) {
const-Optionen = Mediael.getAttribute ('data-setup');
// Prüfen, ob data-setup attr existiert.
//Wir setzen die automatische Einrichtung nur dann automatisch ein, wenn sie das Daten-Setup attr hinzugefügt haben.
if (Optionen! == null) {
//Erstelle eine neue Instanz von video.js.
videojs (MediaL);
}
}
//Wenn getAttribute nicht definiert ist, müssen wir auf das DOM warten.
} sonst {
autoSetupTimeout(1);
pause;
}
}
//Es wurden keine Videos gefunden, also mach weiter, bis die Seite fertig geladen ist.
} sonst wenn (! _WindowLoaded) {
autoSetupTimeout(1);
}
};
/**
* Warten Sie, bis die Seite geladen ist, bevor Sie AutoSetup ausführen. Das wird aufgerufen
* AutoSetup wenn `hasLoaded` den Wert false zurückgibt.
*
* @param {number} warte
* Wie lange muss ich in ms warten
*
* @param {module:videojs} [vjs]
* Die Videojs-Bibliotheksfunktion
* /
Funktion autoSetupTimeout (warte, vjs) {
//Schützen Sie sich vor Beschädigungen in Umgebungen ohne Browser
if (!Dom.isReal()) {
rückkehr;
}
wenn (vjs) {
videojs = vjs;
}
window.setTimeout (AutoSetup, warte);
}
/**
* Wird verwendet, um die interne Erfassung des Ladezustands des Fensters auf „True“ zu setzen.
*
* @privat
* /
Funktion setWindowLoaded () {
_windowLoaded = wahr;
window.removeEventListener ('laden', setWindowLoaded);
}
wenn (dom.isReal ()) {
if (document.ReadyState === 'abgeschlossen') {
setWindowLoaded ();
} sonst {
/**
* Warte auf das Ladeereignis im Fenster und setze _windowLoaded auf true.
*
* Wir verwenden hier einen Standard-Event-Listener, um eine Erhöhung der GUID zu vermeiden
* bevor irgendwelche Spieler erstellt werden.
*
* @listens laden
* /
window.addEventListener ('laden', setWindowLoaded);
}
}
/**
* überprüfe, ob das Fenster geladen wurde
* /
const hasLoaded = Funktion () {
gib _windowLoaded zurück;
};
export {AutoSetup, AutoSetupTimeout, hasLoaded};