ebody: Welche Eventhandler bzgl. Orientierung lassen im Firefox mozRequestFullScreen() zu?

Beitrag lesen

Hallo,

ich nutze aktuell den unten stehenden Code um zu erkennen, ob das Handy "gedreht" wird. In der Landscape Ansicht soll die Seite im Vollbildmodus angezeigt werden, in der Portrait Ansicht nicht. Chrome funktioniert, Firefox aber gibt die Meldung aus:

Anfrage für Vollbildmodus wurde abgelehnt, weil Element.mozRequestFullScreen() nicht aus einem kurz laufenden Benutzer-generierten Ereignis-Handler aufgerufen wurde.

  1. Gibt es einen anderen Eventhandler (als Change) bzgl. Orientierung, wo Firefox den Vollbildmodus erlaubt? window.addEventListener('orientationchange', vollbild); habe ich probiert, hat aber das gleiche Ergebnis.

  2. Stimmt es, dass der Eventhandler der im Firefox Vollbild erlaubt, in weniger als 1 Sekunde ausgeführt werden können muss? Wenn ja, gibt es eine Übersicht der Eventhandler und deren Schnelligkeit oder kann man das messen?

screen.orientation.addEventListener('change', vollbild);

/************************************************		
checkOrientation
************************************************/

	function checkOrientation(){
		//Let's request fullscreen if user switches device in landscape mode.
		if ( screen.orientation.type.startsWith('landscape') ){
			console.log("screen.orientation = landscape - requestFullscreenVideo! " + screen.orientation.type ); 
			//vollbild("landscape");
			var strOrientation = "landscape";
			return strOrientation;
		} 
		if ( screen.orientation.type.startsWith('portrait') ){
			console.log("screen.orientation = portrait - exitFullscreen! " + screen.orientation.type); 
			//vollbild("portrait");
			var strOrientation = "portrait";
			return strOrientation;
		}
	}


/************************************************		
Vollbild
************************************************/		
	function vollbild() {

		var element = document.getElementById("playerBox");

		if (element.requestFullScreen) {

			if (!document.fullScreen) {
			
				if (orientation == "landscape") {
					element.requestFullscreen();
					console.log("Nicht Fullscreen, also setze es FS!"); 
				}
				
			} else {
			
				console.log("Ist Fullscreen, also FS beenden!"); 
				if (orientation !== "landscape") {
					document.exitFullScreen();
				}
				
		}

		} else if (element.mozRequestFullScreen) {

		if (!document.mozFullScreen) {

				if (checkOrientation() == "landscape") {
					element.mozRequestFullScreen();
					console.log("Nicht Fullscreen, also setze es FS!"); 
				}
				
			} else {

				console.log("Ist Fullscreen, also FS beenden!"); 
				if (checkOrientation() !== "landscape") {
					document.mozCancelFullScreen();
				}
		}

		} else if (element.webkitRequestFullScreen) {

			if (!document.webkitIsFullScreen) {
			
				if (checkOrientation() == "landscape") {
					element.webkitRequestFullScreen();
					console.log("Nicht Fullscreen, also setze es FS!"); 
				}
				
			} else {
			
				console.log("Ist Fullscreen, also FS beenden!"); 
				if (checkOrientation() !== "landscape") {
					document.webkitCancelFullScreen();
				}
				
			}

		}

	}	

Gruß ebody