Gunnar Bittersmann: Videoabruf funktioniert nicht bei Chrome und mobilen Geräten

Beitrag lesen

@@Medienbiene

ist ja am Anfang kein Video "gesetzt"

Dann sollte das video-Element am Anfang nicht dargestellt werden, sondern erst, wenn etwas darin zu sehen ist, d.h. nach Aufruf der Funktion zeigeVideo()

Im HTML:

<video id="video" hidden  >

Im JavaScript:

function zeigeVideo(element, name){
	box.removeAttribute('hidden');

BTW, die Benennung der Variablen box = document.getElementById("video"); ist gar keine gute Idee, zumal es ein anderes Element der Klasse box gibt. Ich würde es z.B. videoElement nennen.

Im Stylesheet ggfs. um den Platz freizuhalten:

#video[hidden]
{
	display: inline;
	visibility: hidden;
}

Richtig ist das allerdings auch noch nicht. Das src-Attribut darf nicht leer sein:

“The src attribute gives the address of the media resource. The value must be a valid non-empty URL potentially surrounded by spaces.” [HTML §4.7.4]

Wäre kein src-Attribut besser? Nein, das wäre auch nicht richtig:

“This attribute must be present.” [ebenda]

Wenn man also gültiges HTML haben will, darf das video-Element am Anfang gar nicht im DOM sein. Man könnte es in ein template tun und erst beim ersten Aufruf von zeigeVideo() in DOM tun (wie in diesem Beispiel für li-Elemente gemacht).

LLAP 🖖

--
“When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory