Wie aktiviere ich mit JS bei einem <div>-Element den Vollbildmodus?
Hallo Leute,
Ich habe mich im Internet ein bisschen umgesehen, wie man mit JS ein <video>-Element in den Vollbildmodus schaltet. Folgendes Beispiel habe ich gesehen:
var elem = document.getElementById("name-of-element");
function activateFullscreen() {
if(elem.requestFullscreen) {
elem.requestFullscreen();
} else if(elem.mozRequestScreen) {
elem.mozRequestScreen();
} else if(elem.webkitRequestFullscreen) {
elem.webkitRequestFullscreen();
} else if(elem.msRequestFullscreen) {
elem.msRequestFullscreen();
}
}
Bei einem <video>-Tag funktioniert das Ganze auch. Wenn ich es jedoch mit einem <div>-Container probiere, funktioniert es nicht. Kann mir jemand erklären wie das funktioniert?
Danke
3 Antworten
Das funktioniert bei jedem Element. Du musst allerdings darauf achten, dass die Fullscreen-API Anfragen nur erlaubt, wenn sie während eines Events (z.B. einem Mausklick auf einen "Vollbild"-Button) erlaubt.
Dies soll verhindern, dass eine Website den Vollbildmodus erzwingt und den Nutzer so daran hindert, die Seite zu schließen.
Eine weitere Einschränkung ist, dass, falls sich das Element in einem <iframe> befindet, dieses die Eigenschaft "fullscreen" aktiviert sein muss.
Uncaught TypeError: Cannot read property 'requestFullscreen' of null
at HTMLButtonElement.fullscreenButton.onclick (player.js:27)
Das heißt, das Element ist null, und null hat keine Methode namens 'requestFullscreen'
Wenn Du das ganze auch noch mit einem Autoclic im script kombinierst ...
document.getElementById("id").click()
Für DIV-Elemente ist kein Fullscreen-Modus vorgesehen. Das geht nur für bestimmte Elemente wie eben <video> oder <body>. Bzw. per Definition:
nur Elemente im Top-Level Dokument oder in einem <iframe> mit dem Attribut allowfullscreen können in den Vollbildmodus wechseln.
https://developer.mozilla.org/de/docs/Web/API/Element/requestFullScreen
Welche Fehlermeeldung steht denn in der JS-Konsole?
Das hast du falsch verstanden. Normalerweise sind alle Elemente im Top-Level Dokument, außer Elemente in einem eingebetteten SVG-Element, <iframe>, <object> oder Elemente, die mit .remove() oder .removeChild() entfernt wurden.
Uncaught TypeError: Cannot read property 'requestFullscreen' of null
at HTMLButtonElement.fullscreenButton.onclick (player.js:27)
wie der Kollege schon sagt, du kannst das auf Body machen
var elem = document.body;
aber nicht auf elemente die innerhalb liegen (ausser halt die ausnahmen .)
ein workaround ist , body fullscreen , dann div dem body anpassen .
div height , width 100%
Das heißt übersetzt:
Das Objekt null besitzt keine Methode namens 'requestFullscreen'.
Du solltest vielleicht mal überprüfen, dass das Element, für das du 'requestFullscreen' aufrufst, auch tatsächlich gültig ist.
Ja, bei mir wird auf einen Button geklickt und dann der Vollbildmodus von einem <div>-Container aktiviert.