← Alle Beiträge

Anleitungen

Native Steuerungen auf jedem Video erzwingen

Benutzerdefinierte Videoplayer sehen schick aus, bis sie kaputtgehen: ein fehlender Schieberegler, kein Lautstärkeregler, eine Wiedergabe-Schaltfläche, die Klicks ignoriert. Der Browser liefert kostenlos eine zuverlässige Steuerleiste aus. Eine JustZix-Regel erzwingt sie auf jedem Video, sodass Sie immer funktionierende Steuerungen haben.

Die eine Eigenschaft, die zählt

Jedes <video>-Element hat eine boolesche controls-Eigenschaft. Wenn sie wahr ist, zeichnet der Browser seine eigene Steuerleiste. Seiten deaktivieren sie, damit ihre benutzerdefinierte UI übernehmen kann. Schalten Sie sie wieder ein:

document.querySelectorAll('video').forEach(function (v) {
  v.controls = true;
});

Das ist der Kern. Die Rezepte unten lassen es auf dynamischen Seiten haften und stoppen die Seite davon, es wieder zu entfernen.

Steuerungen auf dynamischen Playern behalten

Viele Seiten schalten controls aus, nachdem die Seite geladen hat, oder ersetzen das Video-Element ganz. Ein MutationObserver, der sowohl neue Knoten als auch Attributänderungen beobachtet, hält Ihre Einstellung an Ort und Stelle.

(function () {
  function force(v) {
    if (v.controls !== true) { v.controls = true; }
  }
  function scan(root) {
    if (root.tagName === 'VIDEO') { force(root); }
    if (root.querySelectorAll) {
      root.querySelectorAll('video').forEach(force);
    }
  }
  scan(document.documentElement);
  new MutationObserver(function (records) {
    records.forEach(function (rec) {
      if (rec.type === 'attributes' && rec.target.tagName === 'VIDEO') {
        force(rec.target);
      }
      rec.addedNodes.forEach(function (n) {
        if (n.nodeType === 1) { scan(n); }
      });
    });
  }).observe(document.documentElement, {
    childList: true,
    subtree: true,
    attributes: true,
    attributeFilter: ['controls']
  });
})();

Der attributeFilter verengt den Observer auf nur das controls-Attribut, sodass er selbst auf geschäftigen Seiten günstig bleibt.

Die kaputte benutzerdefinierte UI mit CSS ausblenden

Sobald die native Leiste sichtbar ist, sitzt das benutzerdefinierte Overlay der Seite oft obendrauf und stiehlt Klicks. Eine kleine CSS-Regel kann es aus dem Weg schieben. Benutzerdefinierte Steuerungen tragen meist eine vorhersehbare Klasse oder ein Datenattribut; inspizieren Sie die Seite einmal und visieren Sie es an.

.video-player .custom-controls,
[data-player-ui],
.vjs-control-bar {
  display: none !important;
}

video {
  pointer-events: auto !important;
}

Der zweite Block aktiviert Klicks auf das Video selbst wieder, falls die Seite sie deaktiviert hat, damit ihr Overlay jede Interaktion erfassen konnte. Passen Sie die Selektoren an den Player an, mit dem Sie es zu tun haben.

Eine kombinierte Klick-zum-Beheben-Aktion

Wenn Sie nur gelegentlich native Steuerungen wollen, belegen Sie es mit einer Taste, statt es immer laufen zu lassen. Diese Regel stellt Steuerungen wieder her und beseitigt blockierende Overlays, wenn Sie ein Kürzel drücken.

document.addEventListener('keydown', function (e) {
  if (e.altKey && e.key.toLowerCase() === 'c') {
    document.querySelectorAll('video').forEach(function (v) {
      v.controls = true;
      v.style.pointerEvents = 'auto';
      v.style.zIndex = '2147483647';
      v.style.position = 'relative';
    });
  }
}, true);

Den z-index anzuheben hebt das Video über jedes Overlay, sodass seine eigene Steuerleiste Klicks empfängt.

Praktische Hinweise

Finden Sie eine paketierte Version in unseren fertigen Beispielen oder laden Sie JustZix herunter. Um mit der Geschwindigkeit weiterzugehen, lesen Sie die Video-Wiedergabegeschwindigkeit überall steuern.

Bewerte diesen Beitrag

Noch keine Bewertungen — sei der Erste.

Probiere es selbst aus

Installiere JustZix und füge ein beliebiges Snippet aus diesem Artikel ein. Zwei Minuten von null bis zu einer funktionierenden Regel auf allen deinen Geräten.

JustZix holen

Funktionen · So funktioniert es · Beispiele · Anwendungsfälle